{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 307,
   "id": "fccae5e7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "id": "27dce883",
   "metadata": {},
   "outputs": [],
   "source": [
    "# We define VM Class and Task Class\n",
    "class VM:\n",
    "    def __init__(self, id, cpu, ram):\n",
    "        self.id = id\n",
    "        self.cpu = cpu\n",
    "        self.ram = ram\n",
    "        self.cost = cpu / 10\n",
    "        self.available_cpu = cpu\n",
    "        self.available_ram = ram\n",
    "\n",
    "class Task:\n",
    "    def __init__(self, id, instructions, memory, deadline):\n",
    "        self.id = id\n",
    "        self.instructions = instructions\n",
    "        self.memory = memory\n",
    "        self.deadline = deadline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "id": "974ccd1f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# round robin algorithm\n",
    "def round_robin_allocate(vms, tasks):\n",
    "    allocations = []\n",
    "    vm_index = 0\n",
    "    num_vms = len(vms)\n",
    "    \n",
    "    for task in tasks:\n",
    "        vm_id = vm_index % num_vms\n",
    "        allocations.append(vm_id)\n",
    "        vm_index += 1\n",
    "    \n",
    "    return allocations\n",
    "\n",
    "def rr_optimize(vms, tasks):\n",
    "    allocations = round_robin_allocate(vms, tasks)\n",
    "    return run_simulation(allocations, vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "id": "f69a7aa5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# shortest job first algorithm\n",
    "def sjf_allocate(vms, tasks):\n",
    "    sorted_tasks = sorted(enumerate(tasks), key=lambda x: x[1].instructions)\n",
    "    allocations = [0] * len(tasks)\n",
    "    vm_loads = [0] * len(vms)\n",
    "    \n",
    "    for task_index, task in sorted_tasks:\n",
    "        vm_id = min(range(len(vms)), key=lambda i: vm_loads[i])\n",
    "        allocations[task_index] = vm_id\n",
    "        vm_loads[vm_id] += task.instructions\n",
    "    \n",
    "    return allocations\n",
    "\n",
    "def sjf_optimize(vms, tasks):\n",
    "    allocations = sjf_allocate(vms, tasks)\n",
    "    return run_simulation(allocations, vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 272,
   "id": "bc96d418",
   "metadata": {},
   "outputs": [],
   "source": [
    "def calculate_overutilization_penalty(vm_utilization, vms):\n",
    "    penalty = 0\n",
    "    for vm in vms:\n",
    "        cpu_overuse = max(0, vm_utilization[vm.id]['cpu'] - vm.cpu)\n",
    "        ram_overuse = max(0, vm_utilization[vm.id]['ram'] - vm.ram)\n",
    "        penalty += (cpu_overuse / vm.cpu + ram_overuse / vm.ram) * 1000\n",
    "    return penalty"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "id": "17ba59f3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def flexible_allocate_tasks(vm_preferences, vms, tasks):\n",
    "    allocations = []\n",
    "    vm_utilization = {vm.id: {'cpu': 0, 'ram': 0} for vm in vms}\n",
    "    \n",
    "    for task_id, preferred_vm_id in enumerate(vm_preferences):\n",
    "        task = tasks[task_id]\n",
    "        allocated_cpu = 0\n",
    "        allocated_ram = 0\n",
    "        task_allocations = []\n",
    "\n",
    "        # Try to allocate to the preferred VM first\n",
    "        preferred_vm = vms[preferred_vm_id]\n",
    "        alloc_cpu = min(task.instructions - allocated_cpu, preferred_vm.cpu - vm_utilization[preferred_vm.id]['cpu'])\n",
    "        alloc_ram = min(task.memory - allocated_ram, preferred_vm.ram - vm_utilization[preferred_vm.id]['ram'])\n",
    "        \n",
    "        if alloc_cpu > 0 or alloc_ram > 0:\n",
    "            task_allocations.append((preferred_vm.id, alloc_cpu, alloc_ram))\n",
    "            vm_utilization[preferred_vm.id]['cpu'] += alloc_cpu\n",
    "            vm_utilization[preferred_vm.id]['ram'] += alloc_ram\n",
    "            allocated_cpu += alloc_cpu\n",
    "            allocated_ram += alloc_ram\n",
    "\n",
    "        # If task is not fully allocated, try other VMs\n",
    "        for vm in vms:\n",
    "            if allocated_cpu >= task.instructions and allocated_ram >= task.memory:\n",
    "                break\n",
    "            if vm.id == preferred_vm.id:\n",
    "                continue\n",
    "            \n",
    "            alloc_cpu = min(task.instructions - allocated_cpu, vm.cpu - vm_utilization[vm.id]['cpu'])\n",
    "            alloc_ram = min(task.memory - allocated_ram, vm.ram - vm_utilization[vm.id]['ram'])\n",
    "            \n",
    "            if alloc_cpu > 0 or alloc_ram > 0:\n",
    "                task_allocations.append((vm.id, alloc_cpu, alloc_ram))\n",
    "                vm_utilization[vm.id]['cpu'] += alloc_cpu\n",
    "                vm_utilization[vm.id]['ram'] += alloc_ram\n",
    "                allocated_cpu += alloc_cpu\n",
    "                allocated_ram += alloc_ram\n",
    "\n",
    "        allocations.append(task_allocations)\n",
    "\n",
    "    return allocations, vm_utilization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "id": "697c8766",
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_simulation(vm_preferences, vms, tasks):\n",
    "    allocations, vm_utilization = flexible_allocate_tasks(vm_preferences, vms, tasks)\n",
    "    \n",
    "    total_cost = 0\n",
    "    total_energy = 0\n",
    "    max_execution_time = 0\n",
    "    \n",
    "    for task_id, task_allocations in enumerate(allocations):\n",
    "        task = tasks[task_id]\n",
    "        task_execution_time = 0\n",
    "        for vm_id, alloc_cpu, alloc_ram in task_allocations:\n",
    "            vm = next(vm for vm in vms if vm.id == vm_id)\n",
    "            execution_time = alloc_cpu / vm.cpu * 1000  # ms\n",
    "            task_execution_time += execution_time\n",
    "            \n",
    "            # Calculate cost based on resource usage and time\n",
    "            cost = vm.cost * (execution_time / 1000) * (alloc_cpu / vm.cpu)\n",
    "            total_cost += cost\n",
    "            \n",
    "            # Calculate energy based on CPU utilization and time\n",
    "            energy = (alloc_cpu / vm.cpu) * (execution_time / 1000)\n",
    "            total_energy += energy\n",
    "        \n",
    "        max_execution_time = max(max_execution_time, task_execution_time)\n",
    "    \n",
    "    overutilization_penalty = calculate_overutilization_penalty(vm_utilization, vms)\n",
    "    \n",
    "    return max_execution_time, total_cost, total_energy, overutilization_penalty\n",
    "\n",
    "def evaluate(individual, vms, tasks):\n",
    "    return run_simulation(individual, vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "id": "7c2d3dcd",
   "metadata": {},
   "outputs": [],
   "source": [
    "def check_fitness(individual):\n",
    "    makespan, cost, energy, overutilization_penalty = run_simulation(individual, vms, tasks)\n",
    "    \n",
    "    # Normalize and combine objectives\n",
    "    normalized_makespan = makespan / 1000\n",
    "    normalized_cost = cost / 1000\n",
    "    normalized_energy = energy / 5\n",
    "\n",
    "    weighted_sum = (normalized_makespan * 0.3 + \n",
    "                    normalized_cost * 0.3 + \n",
    "                    normalized_energy * 0.2 + \n",
    "                    overutilization_penalty * 0.2)\n",
    "    \n",
    "    return weighted_sum, makespan, cost, energy, overutilization_penalty"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "id": "420c127a",
   "metadata": {},
   "outputs": [],
   "source": [
    "#FWA\n",
    "def fwa_optimize(vms,tasks):\n",
    "    def generate_sparks(firework, n, amplitude, num_vms):\n",
    "        return [\n",
    "            [max(0, min(num_vms - 1, x + int(random.uniform(-amplitude, amplitude))))\n",
    "             for x in firework]\n",
    "            for _ in range(n)\n",
    "        ]\n",
    "    def fireworks_algorithm(vms, tasks, n_fireworks=5, n_sparks=30, n_iterations=40):\n",
    "        num_vms = len(vms)\n",
    "        num_tasks = len(tasks)\n",
    "\n",
    "        # Initialize fireworks\n",
    "        fireworks = [random.choices(range(num_vms), k=num_tasks) for _ in range(n_fireworks)]\n",
    "        best_solution = None\n",
    "        best_fitness = float('inf')\n",
    "\n",
    "        for _ in range(n_iterations):\n",
    "            all_solutions = fireworks.copy()\n",
    "\n",
    "            # Generate sparks\n",
    "            for firework in fireworks:\n",
    "                fitness = check_fitness(firework)[0]\n",
    "                if fitness < best_fitness:\n",
    "                    best_fitness = fitness\n",
    "                    best_solution = firework\n",
    "\n",
    "                # Calculate amplitude, ensuring it's within a reasonable range\n",
    "                amplitude = max(1, int(50 * best_fitness / fitness))\n",
    "\n",
    "                all_solutions.extend(generate_sparks(firework, n_sparks, amplitude, num_vms))\n",
    "\n",
    "            # Evaluate and select best solutions\n",
    "            all_solutions.sort(key=lambda x: check_fitness(x)[0])\n",
    "            fireworks = all_solutions[:n_fireworks]\n",
    "\n",
    "        return best_solution, best_fitness\n",
    "\n",
    "    best_solution, best_fitness = fireworks_algorithm(vms, tasks)\n",
    "    return evaluate(best_solution, vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "id": "6d8df19c",
   "metadata": {},
   "outputs": [],
   "source": [
    "#SQSA\n",
    "def sqsa_optimize(vms, tasks, n_squirrels=30, n_iterations=40):\n",
    "    squirrels = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_squirrels)]\n",
    "    fitness = [check_fitness(s)[0] for s in squirrels]\n",
    "\n",
    "    best_idx = fitness.index(min(fitness))\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_squirrels):\n",
    "            if i != best_idx:\n",
    "                for j in range(len(tasks)):\n",
    "                    if random.random() < 0.5:\n",
    "                        squirrels[i][j] = squirrels[best_idx][j]\n",
    "                    else:\n",
    "                        squirrels[i][j] = random.randint(0, len(vms)-1)\n",
    "        \n",
    "        fitness = [check_fitness(s)[0] for s in squirrels]\n",
    "        new_best_idx = fitness.index(min(fitness))\n",
    "        if fitness[new_best_idx] < fitness[best_idx]:\n",
    "            best_idx = new_best_idx\n",
    "\n",
    "    return evaluate(squirrels[best_idx], vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "id": "9d9c05dc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# BAT\n",
    "def bat_optimize(vms, tasks, n_bats=30, n_iterations=40):\n",
    "    bats = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_bats)]\n",
    "    velocities = [[0] * len(tasks) for _ in range(n_bats)]\n",
    "    fitness = [check_fitness(b)[0] for b in bats]\n",
    "    best_bat = bats[fitness.index(min(fitness))]\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_bats):\n",
    "            freq = random.random()\n",
    "            for j in range(len(tasks)):\n",
    "                velocities[i][j] += (bats[i][j] - best_bat[j]) * freq\n",
    "                bats[i][j] = max(0, min(len(vms)-1, int(bats[i][j] + velocities[i][j])))\n",
    "            \n",
    "            if random.random() > 0.5:\n",
    "                bats[i] = [max(0, min(len(vms)-1, best_bat[j] + int(random.gauss(0, 1))))\n",
    "                           for j in range(len(tasks))]\n",
    "        \n",
    "        fitness = [check_fitness(b)[0] for b in bats]\n",
    "        best_idx = fitness.index(min(fitness))\n",
    "        if fitness[best_idx] < check_fitness(best_bat)[0]:\n",
    "            best_bat = bats[best_idx]\n",
    "    return evaluate(best_bat, vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "id": "b44a2174",
   "metadata": {},
   "outputs": [],
   "source": [
    "# PSO\n",
    "def pso_optimize(vms, tasks, n_particles=30, n_iterations=40):\n",
    "    particles = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_particles)]\n",
    "    velocities = [[0] * len(tasks) for _ in range(n_particles)]\n",
    "    personal_best = particles.copy()\n",
    "    fitness = [check_fitness(p)[0] for p in particles]\n",
    "    global_best = particles[fitness.index(min(fitness))]\n",
    "    best_fitness = min(fitness)\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_particles):\n",
    "            # Update velocity and position\n",
    "            new_particle = []\n",
    "            for j in range(len(tasks)):\n",
    "                r1, r2 = random.random(), random.random()\n",
    "                velocities[i][j] = (0.5 * velocities[i][j] + \n",
    "                                    1 * r1 * (personal_best[i][j] - particles[i][j]) +\n",
    "                                    2 * r2 * (global_best[j] - particles[i][j]))\n",
    "                new_position = particles[i][j] + velocities[i][j]\n",
    "                new_particle.append(max(0, min(len(vms)-1, int(new_position))))\n",
    "            \n",
    "            # Evaluate new position\n",
    "            current_fitness = check_fitness(new_particle)[0]\n",
    "            \n",
    "            # Update personal best\n",
    "            if current_fitness < fitness[i]:\n",
    "                personal_best[i] = new_particle\n",
    "                fitness[i] = current_fitness\n",
    "                \n",
    "                # Update global best\n",
    "                if current_fitness < best_fitness:\n",
    "                    best_fitness = current_fitness\n",
    "                    global_best = new_particle\n",
    "            \n",
    "            # Update particle position\n",
    "            particles[i] = new_particle\n",
    "\n",
    "    return evaluate(global_best, vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 280,
   "id": "a5ad0fe0",
   "metadata": {},
   "outputs": [],
   "source": [
    "# BMO\n",
    "def bmo_optimize(vms, tasks, n_barnacles=30, n_iterations=40):\n",
    "    barnacles = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_barnacles)]\n",
    "    fitness = [check_fitness(b)[0] for b in barnacles]\n",
    "    best_barnacle = barnacles[fitness.index(min(fitness))]\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_barnacles):\n",
    "            if random.random() < 0.5:  # Pseudo-fertilization\n",
    "                partner = random.choice(barnacles)\n",
    "                barnacles[i] = [b if random.random() < 0.5 else p \n",
    "                                for b, p in zip(barnacles[i], partner)]\n",
    "            else:  # Larval development\n",
    "                barnacles[i] = [max(0, min(len(vms)-1, x + int(random.gauss(0, 1))))\n",
    "                                for x in barnacles[i]]\n",
    "        \n",
    "        fitness = [check_fitness(b)[0] for b in barnacles]\n",
    "        new_best = barnacles[fitness.index(min(fitness))]\n",
    "        if check_fitness(new_best)[0] < check_fitness(best_barnacle)[0]:\n",
    "            best_barnacle = new_best\n",
    "\n",
    "    return evaluate(best_barnacle, vms, tasks)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 281,
   "id": "35686442",
   "metadata": {},
   "outputs": [],
   "source": [
    "#SSA\n",
    "def ssa_optimize(vms, tasks, n_sparrows=30, n_iterations=40):\n",
    "    sparrows = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_sparrows)]\n",
    "    fitness = [check_fitness(s)[0] for s in sparrows]\n",
    "    best_sparrow = sparrows[fitness.index(min(fitness))]\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_sparrows):\n",
    "            if i < n_sparrows // 5:  # Discoverer\n",
    "                sparrows[i] = [max(0, min(len(vms)-1, x + int(random.gauss(0, 1))))\n",
    "                               for x in sparrows[i]]\n",
    "            elif i < n_sparrows // 2:  # Joiner\n",
    "                sparrows[i] = [best_sparrow[j] if random.random() < 0.5 else sparrows[i][j]\n",
    "                               for j in range(len(tasks))]\n",
    "            else:  # Scrounger\n",
    "                sparrows[i] = [random.randint(0, len(vms)-1) if random.random() < 0.1 else sparrows[i][j]\n",
    "                               for j in range(len(tasks))]\n",
    "        \n",
    "        fitness = [check_fitness(s)[0] for s in sparrows]\n",
    "        new_best = sparrows[fitness.index(min(fitness))]\n",
    "        if check_fitness(new_best)[0] < check_fitness(best_sparrow)[0]:\n",
    "            best_sparrow = new_best\n",
    "\n",
    "    return evaluate(best_sparrow, vms, tasks)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72ccb063",
   "metadata": {},
   "source": [
    "# Results->"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e239071a",
   "metadata": {},
   "source": [
    "Fix no of tasks to 100 and no of VMs range from 10 to 40\n",
    "\n",
    "change num_vms variable and run the next cells again"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "id": "0b3ed712",
   "metadata": {},
   "outputs": [],
   "source": [
    "makespan_results=pd.DataFrame(columns=[\"No of VMs\",\"RR\",\"SJF\",\"FWA\",\"SQSA\",\"BAT\",\"PSO\",\"BMO\",\"SSA\"])\n",
    "cost_results=pd.DataFrame(columns=[\"No of VMs\",\"RR\",\"SJF\",\"FWA\",\"SQSA\",\"BAT\",\"PSO\",\"BMO\",\"SSA\"])\n",
    "energy_results=pd.DataFrame(columns=[\"No of VMs\",\"RR\",\"SJF\",\"FWA\",\"SQSA\",\"BAT\",\"PSO\",\"BMO\",\"SSA\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 287,
   "id": "d9cca722",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_vms = 40\n",
    "num_tasks = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "id": "25e4288f",
   "metadata": {},
   "outputs": [],
   "source": [
    "rr_mean_makespan,rr_mean_energy,rr_mean_cost=0,0,0\n",
    "sjf_mean_makespan,sjf_mean_energy,sjf_mean_cost=0,0,0\n",
    "fwa_mean_makespan,fwa_mean_energy,fwa_mean_cost=0,0,0\n",
    "sqsa_mean_makespan,sqsa_mean_energy,sqsa_mean_cost=0,0,0\n",
    "bat_mean_makespan,bat_mean_energy,bat_mean_cost=0,0,0\n",
    "pso_mean_makespan,pso_mean_energy,pso_mean_cost=0,0,0\n",
    "bmo_mean_makespan,bmo_mean_energy,bmo_mean_cost=0,0,0\n",
    "ssa_mean_makespan,ssa_mean_energy,ssa_mean_cost=0,0,0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "id": "f82a0945",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--RR-- 696.7924684072229 3.4963937410373145 632.2474092211476\n",
      "--SJF-- 631.8992646401716 3.4718879042892077 637.9395534832179\n",
      "--FWA-- 612.2841688089118 3.2782227155272956 605.9661363960054\n",
      "--SQSA-- 495.36637955305775 3.1833799583212574 601.5448157541352\n",
      "--BAT-- 635.878210433027 3.2143338586967722 595.0297659793218\n",
      "--PSO-- 497.1890661364146 3.1325385820375407 593.7340604643157\n",
      "--BMO-- 538.2620648152581 3.2257932184178424 604.1981754319484\n",
      "--SSA-- 513.1540383576446 3.2062896836877988 600.8381843621191\n"
     ]
    }
   ],
   "source": [
    "n=10\n",
    "for _ in range(n):\n",
    "    vms = [VM(i, random.randint(1000, 3000), random.randint(1000, 2000)) for i in range(num_vms)]\n",
    "    tasks = [Task(i, random.randint(100, 500), random.randint(100, 500), random.randint(50, 500)) for i in range(num_tasks)]\n",
    "    \n",
    "    # RR\n",
    "    rr_makespan, rr_cost, rr_energy= rr_optimize(vms, tasks)[:3]\n",
    "    rr_mean_makespan+=rr_makespan\n",
    "    rr_mean_cost+=rr_cost\n",
    "    rr_mean_energy+=rr_energy\n",
    "    \n",
    "    # SJF\n",
    "    sjf_makespan, sjf_cost, sjf_energy= sjf_optimize(vms, tasks)[:3]\n",
    "    sjf_mean_makespan+=sjf_makespan\n",
    "    sjf_mean_cost+=sjf_cost\n",
    "    sjf_mean_energy+=sjf_energy\n",
    "    \n",
    "    #FWA\n",
    "    fwa_makespan, fwa_cost, fwa_energy= fwa_optimize(vms, tasks)[:3]\n",
    "    fwa_mean_makespan+=fwa_makespan\n",
    "    fwa_mean_cost+=fwa_cost\n",
    "    fwa_mean_energy+=fwa_energy\n",
    "    \n",
    "    #SQSA\n",
    "    sqsa_makespan, sqsa_cost, sqsa_energy= sqsa_optimize(vms, tasks)[:3]\n",
    "    sqsa_mean_makespan+=sqsa_makespan\n",
    "    sqsa_mean_cost+=sqsa_cost\n",
    "    sqsa_mean_energy+=sqsa_energy\n",
    "\n",
    "    #BAT\n",
    "    bat_makespan, bat_cost, bat_energy= bat_optimize(vms, tasks)[:3]\n",
    "    bat_mean_makespan+=bat_makespan\n",
    "    bat_mean_cost+=bat_cost\n",
    "    bat_mean_energy+=bat_energy\n",
    "    \n",
    "    #PSO\n",
    "    pso_makespan, pso_cost, pso_energy= pso_optimize(vms, tasks)[:3]\n",
    "    pso_mean_makespan+=pso_makespan\n",
    "    pso_mean_cost+=pso_cost\n",
    "    pso_mean_energy+=pso_energy\n",
    "\n",
    "    #BMO\n",
    "    bmo_makespan, bmo_cost, bmo_energy= bmo_optimize(vms, tasks)[:3]\n",
    "    bmo_mean_makespan+=bmo_makespan\n",
    "    bmo_mean_cost+=bmo_cost\n",
    "    bmo_mean_energy+=bmo_energy\n",
    "    \n",
    "    #SSA\n",
    "    ssa_makespan, ssa_cost, ssa_energy= ssa_optimize(vms, tasks)[:3]\n",
    "    ssa_mean_makespan+=ssa_makespan\n",
    "    ssa_mean_cost+=ssa_cost\n",
    "    ssa_mean_energy+=ssa_energy\n",
    "    \n",
    "# RR\n",
    "rr_mean_makespan/=n\n",
    "rr_mean_energy/=n\n",
    "rr_mean_cost/=n\n",
    "print(\"--RR--\",rr_mean_makespan,rr_mean_energy,rr_mean_cost)\n",
    "\n",
    "#SJF\n",
    "sjf_mean_makespan/=n\n",
    "sjf_mean_energy/=n\n",
    "sjf_mean_cost/=n\n",
    "print(\"--SJF--\",sjf_mean_makespan,sjf_mean_energy,sjf_mean_cost)\n",
    "\n",
    "#FWA\n",
    "fwa_mean_makespan/=n\n",
    "fwa_mean_energy/=n\n",
    "fwa_mean_cost/=n\n",
    "print(\"--FWA--\",fwa_mean_makespan,fwa_mean_energy,fwa_mean_cost)\n",
    "    \n",
    "#SQSA\n",
    "sqsa_mean_makespan/=n\n",
    "sqsa_mean_energy/=n\n",
    "sqsa_mean_cost/=n\n",
    "print(\"--SQSA--\",sqsa_mean_makespan,sqsa_mean_energy,sqsa_mean_cost)\n",
    "\n",
    "#BAT\n",
    "bat_mean_makespan/=n\n",
    "bat_mean_energy/=n\n",
    "bat_mean_cost/=n\n",
    "print(\"--BAT--\",bat_mean_makespan,bat_mean_energy,bat_mean_cost)\n",
    "    \n",
    "#PSO\n",
    "pso_mean_makespan/=n\n",
    "pso_mean_energy/=n\n",
    "pso_mean_cost/=n\n",
    "print(\"--PSO--\",pso_mean_makespan,pso_mean_energy,pso_mean_cost)\n",
    "\n",
    "#BMO\n",
    "bmo_mean_makespan/=n\n",
    "bmo_mean_energy/=n\n",
    "bmo_mean_cost/=n\n",
    "print(\"--BMO--\",bmo_mean_makespan,bmo_mean_energy,bmo_mean_cost)\n",
    "\n",
    "#SSA\n",
    "ssa_mean_makespan/=n\n",
    "ssa_mean_energy/=n\n",
    "ssa_mean_cost/=n\n",
    "print(\"--SSA--\",ssa_mean_makespan,ssa_mean_energy,ssa_mean_cost)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "2e7f66e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "makespan_results.loc[6]=[num_vms,rr_mean_makespan,sjf_mean_makespan,fwa_mean_makespan,sqsa_mean_makespan,bat_mean_makespan,pso_mean_makespan,bmo_mean_makespan,ssa_mean_makespan]\n",
    "cost_results.loc[6]=[num_vms,rr_mean_cost,sjf_mean_cost,fwa_mean_cost,sqsa_mean_cost,bat_mean_cost,pso_mean_cost,bmo_mean_cost,ssa_mean_cost]\n",
    "energy_results.loc[6]=[num_vms,rr_mean_energy,sjf_mean_energy,fwa_mean_energy,sqsa_mean_energy,bat_mean_energy,pso_mean_energy,bmo_mean_energy,ssa_mean_energy]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "a4baf0e6",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of VMs</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10.0</td>\n",
       "      <td>348.566561</td>\n",
       "      <td>373.158738</td>\n",
       "      <td>293.543887</td>\n",
       "      <td>255.651108</td>\n",
       "      <td>311.167024</td>\n",
       "      <td>303.391000</td>\n",
       "      <td>293.574150</td>\n",
       "      <td>271.383590</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15.0</td>\n",
       "      <td>397.948262</td>\n",
       "      <td>414.508197</td>\n",
       "      <td>357.688300</td>\n",
       "      <td>326.411173</td>\n",
       "      <td>398.604153</td>\n",
       "      <td>399.167753</td>\n",
       "      <td>342.413006</td>\n",
       "      <td>334.368816</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20.0</td>\n",
       "      <td>388.724934</td>\n",
       "      <td>415.721607</td>\n",
       "      <td>335.226211</td>\n",
       "      <td>285.315557</td>\n",
       "      <td>368.280618</td>\n",
       "      <td>357.435028</td>\n",
       "      <td>342.163721</td>\n",
       "      <td>340.692387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25.0</td>\n",
       "      <td>396.716746</td>\n",
       "      <td>420.390408</td>\n",
       "      <td>305.343276</td>\n",
       "      <td>287.831115</td>\n",
       "      <td>351.021924</td>\n",
       "      <td>371.173868</td>\n",
       "      <td>302.874087</td>\n",
       "      <td>308.821672</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30.0</td>\n",
       "      <td>444.982718</td>\n",
       "      <td>452.386171</td>\n",
       "      <td>345.748320</td>\n",
       "      <td>294.277194</td>\n",
       "      <td>387.856102</td>\n",
       "      <td>401.670237</td>\n",
       "      <td>335.678927</td>\n",
       "      <td>332.282615</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>35.0</td>\n",
       "      <td>414.515445</td>\n",
       "      <td>426.421584</td>\n",
       "      <td>316.460363</td>\n",
       "      <td>298.165397</td>\n",
       "      <td>364.187241</td>\n",
       "      <td>387.281640</td>\n",
       "      <td>332.334848</td>\n",
       "      <td>348.254803</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>40.0</td>\n",
       "      <td>449.638442</td>\n",
       "      <td>438.257650</td>\n",
       "      <td>311.570557</td>\n",
       "      <td>320.376817</td>\n",
       "      <td>331.602671</td>\n",
       "      <td>383.779552</td>\n",
       "      <td>379.468950</td>\n",
       "      <td>330.803175</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of VMs          RR         SJF         FWA        SQSA         BAT  \\\n",
       "0       10.0  348.566561  373.158738  293.543887  255.651108  311.167024   \n",
       "1       15.0  397.948262  414.508197  357.688300  326.411173  398.604153   \n",
       "2       20.0  388.724934  415.721607  335.226211  285.315557  368.280618   \n",
       "3       25.0  396.716746  420.390408  305.343276  287.831115  351.021924   \n",
       "4       30.0  444.982718  452.386171  345.748320  294.277194  387.856102   \n",
       "5       35.0  414.515445  426.421584  316.460363  298.165397  364.187241   \n",
       "6       40.0  449.638442  438.257650  311.570557  320.376817  331.602671   \n",
       "\n",
       "          PSO         BMO         SSA  \n",
       "0  303.391000  293.574150  271.383590  \n",
       "1  399.167753  342.413006  334.368816  \n",
       "2  357.435028  342.163721  340.692387  \n",
       "3  371.173868  302.874087  308.821672  \n",
       "4  401.670237  335.678927  332.282615  \n",
       "5  387.281640  332.334848  348.254803  \n",
       "6  383.779552  379.468950  330.803175  "
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "makespan_results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "ff414adb",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of VMs</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10.0</td>\n",
       "      <td>326.134301</td>\n",
       "      <td>325.055427</td>\n",
       "      <td>305.999589</td>\n",
       "      <td>308.243038</td>\n",
       "      <td>313.967940</td>\n",
       "      <td>316.306597</td>\n",
       "      <td>308.527742</td>\n",
       "      <td>309.106937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15.0</td>\n",
       "      <td>469.203217</td>\n",
       "      <td>470.027151</td>\n",
       "      <td>440.749030</td>\n",
       "      <td>442.265115</td>\n",
       "      <td>448.529936</td>\n",
       "      <td>451.757597</td>\n",
       "      <td>444.996194</td>\n",
       "      <td>438.609238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20.0</td>\n",
       "      <td>521.887581</td>\n",
       "      <td>537.192201</td>\n",
       "      <td>471.518600</td>\n",
       "      <td>470.558280</td>\n",
       "      <td>477.285336</td>\n",
       "      <td>492.576291</td>\n",
       "      <td>483.640668</td>\n",
       "      <td>469.892662</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25.0</td>\n",
       "      <td>514.367841</td>\n",
       "      <td>520.495522</td>\n",
       "      <td>436.748135</td>\n",
       "      <td>444.982467</td>\n",
       "      <td>444.579982</td>\n",
       "      <td>483.590251</td>\n",
       "      <td>460.975608</td>\n",
       "      <td>452.151844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30.0</td>\n",
       "      <td>554.735821</td>\n",
       "      <td>557.707577</td>\n",
       "      <td>457.091269</td>\n",
       "      <td>471.076755</td>\n",
       "      <td>467.106928</td>\n",
       "      <td>507.733480</td>\n",
       "      <td>492.710554</td>\n",
       "      <td>485.973747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>35.0</td>\n",
       "      <td>561.387477</td>\n",
       "      <td>563.086056</td>\n",
       "      <td>444.342425</td>\n",
       "      <td>467.850121</td>\n",
       "      <td>443.784262</td>\n",
       "      <td>514.195227</td>\n",
       "      <td>490.930837</td>\n",
       "      <td>475.622897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>40.0</td>\n",
       "      <td>589.026509</td>\n",
       "      <td>586.415565</td>\n",
       "      <td>458.135727</td>\n",
       "      <td>481.232031</td>\n",
       "      <td>468.696792</td>\n",
       "      <td>524.026545</td>\n",
       "      <td>508.955408</td>\n",
       "      <td>494.651855</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of VMs          RR         SJF         FWA        SQSA         BAT  \\\n",
       "0       10.0  326.134301  325.055427  305.999589  308.243038  313.967940   \n",
       "1       15.0  469.203217  470.027151  440.749030  442.265115  448.529936   \n",
       "2       20.0  521.887581  537.192201  471.518600  470.558280  477.285336   \n",
       "3       25.0  514.367841  520.495522  436.748135  444.982467  444.579982   \n",
       "4       30.0  554.735821  557.707577  457.091269  471.076755  467.106928   \n",
       "5       35.0  561.387477  563.086056  444.342425  467.850121  443.784262   \n",
       "6       40.0  589.026509  586.415565  458.135727  481.232031  468.696792   \n",
       "\n",
       "          PSO         BMO         SSA  \n",
       "0  316.306597  308.527742  309.106937  \n",
       "1  451.757597  444.996194  438.609238  \n",
       "2  492.576291  483.640668  469.892662  \n",
       "3  483.590251  460.975608  452.151844  \n",
       "4  507.733480  492.710554  485.973747  \n",
       "5  514.195227  490.930837  475.622897  \n",
       "6  524.026545  508.955408  494.651855  "
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost_results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "id": "b6e534d6",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of VMs</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10.0</td>\n",
       "      <td>1.690669</td>\n",
       "      <td>1.681327</td>\n",
       "      <td>1.539971</td>\n",
       "      <td>1.542770</td>\n",
       "      <td>1.592983</td>\n",
       "      <td>1.602920</td>\n",
       "      <td>1.541886</td>\n",
       "      <td>1.538309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15.0</td>\n",
       "      <td>2.713577</td>\n",
       "      <td>2.737240</td>\n",
       "      <td>2.492727</td>\n",
       "      <td>2.437267</td>\n",
       "      <td>2.564152</td>\n",
       "      <td>2.542549</td>\n",
       "      <td>2.480072</td>\n",
       "      <td>2.441914</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20.0</td>\n",
       "      <td>2.865236</td>\n",
       "      <td>3.015303</td>\n",
       "      <td>2.482737</td>\n",
       "      <td>2.293156</td>\n",
       "      <td>2.492973</td>\n",
       "      <td>2.574584</td>\n",
       "      <td>2.464807</td>\n",
       "      <td>2.350688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25.0</td>\n",
       "      <td>2.881187</td>\n",
       "      <td>2.973211</td>\n",
       "      <td>2.181896</td>\n",
       "      <td>2.154178</td>\n",
       "      <td>2.304066</td>\n",
       "      <td>2.587685</td>\n",
       "      <td>2.324047</td>\n",
       "      <td>2.203588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30.0</td>\n",
       "      <td>3.431461</td>\n",
       "      <td>3.463336</td>\n",
       "      <td>2.452345</td>\n",
       "      <td>2.404746</td>\n",
       "      <td>2.589216</td>\n",
       "      <td>2.868654</td>\n",
       "      <td>2.707426</td>\n",
       "      <td>2.638588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>35.0</td>\n",
       "      <td>3.450209</td>\n",
       "      <td>3.462311</td>\n",
       "      <td>2.306849</td>\n",
       "      <td>2.357581</td>\n",
       "      <td>2.314211</td>\n",
       "      <td>2.928384</td>\n",
       "      <td>2.607616</td>\n",
       "      <td>2.466589</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>40.0</td>\n",
       "      <td>3.725988</td>\n",
       "      <td>3.693244</td>\n",
       "      <td>2.386503</td>\n",
       "      <td>2.437955</td>\n",
       "      <td>2.534019</td>\n",
       "      <td>2.960306</td>\n",
       "      <td>2.788281</td>\n",
       "      <td>2.604782</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of VMs        RR       SJF       FWA      SQSA       BAT       PSO  \\\n",
       "0       10.0  1.690669  1.681327  1.539971  1.542770  1.592983  1.602920   \n",
       "1       15.0  2.713577  2.737240  2.492727  2.437267  2.564152  2.542549   \n",
       "2       20.0  2.865236  3.015303  2.482737  2.293156  2.492973  2.574584   \n",
       "3       25.0  2.881187  2.973211  2.181896  2.154178  2.304066  2.587685   \n",
       "4       30.0  3.431461  3.463336  2.452345  2.404746  2.589216  2.868654   \n",
       "5       35.0  3.450209  3.462311  2.306849  2.357581  2.314211  2.928384   \n",
       "6       40.0  3.725988  3.693244  2.386503  2.437955  2.534019  2.960306   \n",
       "\n",
       "        BMO       SSA  \n",
       "0  1.541886  1.538309  \n",
       "1  2.480072  2.441914  \n",
       "2  2.464807  2.350688  \n",
       "3  2.324047  2.203588  \n",
       "4  2.707426  2.638588  \n",
       "5  2.607616  2.466589  \n",
       "6  2.788281  2.604782  "
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "energy_results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "id": "ec33fd39",
   "metadata": {},
   "outputs": [],
   "source": [
    "makespan_results_tasks=pd.DataFrame(columns=[\"No of tasks\",\"RR\",\"SJF\",\"FWA\",\"SQSA\",\"BAT\",\"PSO\",\"BMO\",\"SSA\"])\n",
    "cost_results_tasks=pd.DataFrame(columns=[\"No of tasks\",\"RR\",\"SJF\",\"FWA\",\"SQSA\",\"BAT\",\"PSO\",\"BMO\",\"SSA\"])\n",
    "energy_results_tasks=pd.DataFrame(columns=[\"No of tasks\",\"RR\",\"SJF\",\"FWA\",\"SQSA\",\"BAT\",\"PSO\",\"BMO\",\"SSA\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40118a79",
   "metadata": {},
   "source": [
    "Fix no of VMs to 20 and no of tasks range from 40 to 150 <br>\n",
    "\n",
    "Change num_tasks value and run the remaining cells again."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "id": "b25801e6",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_vms = 20\n",
    "num_tasks = 150"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "id": "19b8b6b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "rr_mean_makespan,rr_mean_energy,rr_mean_cost=0,0,0\n",
    "sjf_mean_makespan,sjf_mean_energy,sjf_mean_cost=0,0,0\n",
    "fwa_mean_makespan,fwa_mean_energy,fwa_mean_cost=0,0,0\n",
    "sqsa_mean_makespan,sqsa_mean_energy,sqsa_mean_cost=0,0,0\n",
    "bat_mean_makespan,bat_mean_energy,bat_mean_cost=0,0,0\n",
    "pso_mean_makespan,pso_mean_energy,pso_mean_cost=0,0,0\n",
    "bmo_mean_makespan,bmo_mean_energy,bmo_mean_cost=0,0,0\n",
    "ssa_mean_makespan,ssa_mean_energy,ssa_mean_cost=0,0,0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "id": "1147e7c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--RR-- 397.18251719342254 3.528708554071211 636.6445825401354\n",
      "--SJF-- 391.0629238664202 3.535135902457506 639.4768434964686\n",
      "--FWA-- 337.1947910879165 3.2644905297705855 604.2496110581855\n",
      "--SQSA-- 330.3229251259846 3.287680826755264 607.167543684508\n",
      "--BAT-- 364.27762531530726 3.396261256879572 621.1209235473207\n",
      "--PSO-- 360.7561827335736 3.4102734388121143 623.3264861960849\n",
      "--BMO-- 340.65811719433583 3.313240583229186 611.3702039616643\n",
      "--SSA-- 341.81592724157525 3.285107002908692 606.4509566310381\n"
     ]
    }
   ],
   "source": [
    "n=10\n",
    "for _ in range(n):\n",
    "    vms = [VM(i, random.randint(1000, 3000), random.randint(1000, 2000)) for i in range(num_vms)]\n",
    "    tasks = [Task(i, random.randint(100, 500), random.randint(100, 500), random.randint(50, 500)) for i in range(num_tasks)]\n",
    "    \n",
    "    # RR\n",
    "    rr_makespan, rr_cost, rr_energy= rr_optimize(vms, tasks)[:3]\n",
    "    rr_mean_makespan+=rr_makespan\n",
    "    rr_mean_cost+=rr_cost\n",
    "    rr_mean_energy+=rr_energy\n",
    "    \n",
    "    # SJF\n",
    "    sjf_makespan, sjf_cost, sjf_energy= sjf_optimize(vms, tasks)[:3]\n",
    "    sjf_mean_makespan+=sjf_makespan\n",
    "    sjf_mean_cost+=sjf_cost\n",
    "    sjf_mean_energy+=sjf_energy\n",
    "    \n",
    "    #FWA\n",
    "    fwa_makespan, fwa_cost, fwa_energy= fwa_optimize(vms, tasks)[:3]\n",
    "    fwa_mean_makespan+=fwa_makespan\n",
    "    fwa_mean_cost+=fwa_cost\n",
    "    fwa_mean_energy+=fwa_energy\n",
    "    \n",
    "    #SQSA\n",
    "    sqsa_makespan, sqsa_cost, sqsa_energy= sqsa_optimize(vms, tasks)[:3]\n",
    "    sqsa_mean_makespan+=sqsa_makespan\n",
    "    sqsa_mean_cost+=sqsa_cost\n",
    "    sqsa_mean_energy+=sqsa_energy\n",
    "\n",
    "    #BAT\n",
    "    bat_makespan, bat_cost, bat_energy= bat_optimize(vms, tasks)[:3]\n",
    "    bat_mean_makespan+=bat_makespan\n",
    "    bat_mean_cost+=bat_cost\n",
    "    bat_mean_energy+=bat_energy\n",
    "    \n",
    "    #PSO\n",
    "    pso_makespan, pso_cost, pso_energy= pso_optimize(vms, tasks)[:3]\n",
    "    pso_mean_makespan+=pso_makespan\n",
    "    pso_mean_cost+=pso_cost\n",
    "    pso_mean_energy+=pso_energy\n",
    "\n",
    "    #BMO\n",
    "    bmo_makespan, bmo_cost, bmo_energy= bmo_optimize(vms, tasks)[:3]\n",
    "    bmo_mean_makespan+=bmo_makespan\n",
    "    bmo_mean_cost+=bmo_cost\n",
    "    bmo_mean_energy+=bmo_energy\n",
    "    \n",
    "    #SSA\n",
    "    ssa_makespan, ssa_cost, ssa_energy= ssa_optimize(vms, tasks)[:3]\n",
    "    ssa_mean_makespan+=ssa_makespan\n",
    "    ssa_mean_cost+=ssa_cost\n",
    "    ssa_mean_energy+=ssa_energy\n",
    "    \n",
    "# RR\n",
    "rr_mean_makespan/=n\n",
    "rr_mean_energy/=n\n",
    "rr_mean_cost/=n\n",
    "print(\"--RR--\",rr_mean_makespan,rr_mean_energy,rr_mean_cost)\n",
    "\n",
    "#SJF\n",
    "sjf_mean_makespan/=n\n",
    "sjf_mean_energy/=n\n",
    "sjf_mean_cost/=n\n",
    "print(\"--SJF--\",sjf_mean_makespan,sjf_mean_energy,sjf_mean_cost)\n",
    "\n",
    "#FWA\n",
    "fwa_mean_makespan/=n\n",
    "fwa_mean_energy/=n\n",
    "fwa_mean_cost/=n\n",
    "print(\"--FWA--\",fwa_mean_makespan,fwa_mean_energy,fwa_mean_cost)\n",
    "    \n",
    "#SQSA\n",
    "sqsa_mean_makespan/=n\n",
    "sqsa_mean_energy/=n\n",
    "sqsa_mean_cost/=n\n",
    "print(\"--SQSA--\",sqsa_mean_makespan,sqsa_mean_energy,sqsa_mean_cost)\n",
    "\n",
    "#BAT\n",
    "bat_mean_makespan/=n\n",
    "bat_mean_energy/=n\n",
    "bat_mean_cost/=n\n",
    "print(\"--BAT--\",bat_mean_makespan,bat_mean_energy,bat_mean_cost)\n",
    "    \n",
    "#PSO\n",
    "pso_mean_makespan/=n\n",
    "pso_mean_energy/=n\n",
    "pso_mean_cost/=n\n",
    "print(\"--PSO--\",pso_mean_makespan,pso_mean_energy,pso_mean_cost)\n",
    "\n",
    "#BMO\n",
    "bmo_mean_makespan/=n\n",
    "bmo_mean_energy/=n\n",
    "bmo_mean_cost/=n\n",
    "print(\"--BMO--\",bmo_mean_makespan,bmo_mean_energy,bmo_mean_cost)\n",
    "\n",
    "#SSA\n",
    "ssa_mean_makespan/=n\n",
    "ssa_mean_energy/=n\n",
    "ssa_mean_cost/=n\n",
    "print(\"--SSA--\",ssa_mean_makespan,ssa_mean_energy,ssa_mean_cost)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "id": "707363d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "makespan_results_tasks.loc[5]=[num_tasks,rr_mean_makespan,sjf_mean_makespan,fwa_mean_makespan,sqsa_mean_makespan,bat_mean_makespan,pso_mean_makespan,bmo_mean_makespan,ssa_mean_makespan]\n",
    "cost_results_tasks.loc[5]=[num_tasks,rr_mean_cost,sjf_mean_cost,fwa_mean_cost,sqsa_mean_cost,bat_mean_cost,pso_mean_cost,bmo_mean_cost,ssa_mean_cost]\n",
    "energy_results_tasks.loc[5]=[num_tasks,rr_mean_energy,sjf_mean_energy,fwa_mean_energy,sqsa_mean_energy,bat_mean_energy,pso_mean_energy,bmo_mean_energy,ssa_mean_energy]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "id": "3162c568",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of tasks</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>40.0</td>\n",
       "      <td>389.472268</td>\n",
       "      <td>423.887790</td>\n",
       "      <td>271.468405</td>\n",
       "      <td>246.694223</td>\n",
       "      <td>289.719260</td>\n",
       "      <td>332.867695</td>\n",
       "      <td>301.302868</td>\n",
       "      <td>282.532479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50.0</td>\n",
       "      <td>384.898289</td>\n",
       "      <td>415.568904</td>\n",
       "      <td>299.275869</td>\n",
       "      <td>242.519430</td>\n",
       "      <td>332.493365</td>\n",
       "      <td>322.999414</td>\n",
       "      <td>292.784959</td>\n",
       "      <td>310.813726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>60.0</td>\n",
       "      <td>419.190448</td>\n",
       "      <td>443.956105</td>\n",
       "      <td>310.975323</td>\n",
       "      <td>290.010729</td>\n",
       "      <td>330.035787</td>\n",
       "      <td>374.160144</td>\n",
       "      <td>331.343598</td>\n",
       "      <td>343.362958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>70.0</td>\n",
       "      <td>429.080726</td>\n",
       "      <td>415.730380</td>\n",
       "      <td>345.577240</td>\n",
       "      <td>277.171121</td>\n",
       "      <td>356.821621</td>\n",
       "      <td>360.270293</td>\n",
       "      <td>322.326011</td>\n",
       "      <td>327.254720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100.0</td>\n",
       "      <td>419.664278</td>\n",
       "      <td>426.294851</td>\n",
       "      <td>347.706901</td>\n",
       "      <td>349.301557</td>\n",
       "      <td>395.063972</td>\n",
       "      <td>380.850726</td>\n",
       "      <td>354.657602</td>\n",
       "      <td>350.157312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>150.0</td>\n",
       "      <td>397.182517</td>\n",
       "      <td>391.062924</td>\n",
       "      <td>337.194791</td>\n",
       "      <td>330.322925</td>\n",
       "      <td>364.277625</td>\n",
       "      <td>360.756183</td>\n",
       "      <td>340.658117</td>\n",
       "      <td>341.815927</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of tasks          RR         SJF         FWA        SQSA         BAT  \\\n",
       "0         40.0  389.472268  423.887790  271.468405  246.694223  289.719260   \n",
       "1         50.0  384.898289  415.568904  299.275869  242.519430  332.493365   \n",
       "2         60.0  419.190448  443.956105  310.975323  290.010729  330.035787   \n",
       "3         70.0  429.080726  415.730380  345.577240  277.171121  356.821621   \n",
       "4        100.0  419.664278  426.294851  347.706901  349.301557  395.063972   \n",
       "5        150.0  397.182517  391.062924  337.194791  330.322925  364.277625   \n",
       "\n",
       "          PSO         BMO         SSA  \n",
       "0  332.867695  301.302868  282.532479  \n",
       "1  322.999414  292.784959  310.813726  \n",
       "2  374.160144  331.343598  343.362958  \n",
       "3  360.270293  322.326011  327.254720  \n",
       "4  380.850726  354.657602  350.157312  \n",
       "5  360.756183  340.658117  341.815927  "
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "makespan_results_tasks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "id": "b8f8231a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of tasks</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>40.0</td>\n",
       "      <td>252.074720</td>\n",
       "      <td>253.429004</td>\n",
       "      <td>191.737029</td>\n",
       "      <td>194.908957</td>\n",
       "      <td>196.918389</td>\n",
       "      <td>222.808115</td>\n",
       "      <td>206.777716</td>\n",
       "      <td>199.265344</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50.0</td>\n",
       "      <td>292.362115</td>\n",
       "      <td>295.934033</td>\n",
       "      <td>240.600214</td>\n",
       "      <td>230.160551</td>\n",
       "      <td>246.386206</td>\n",
       "      <td>260.781770</td>\n",
       "      <td>248.552978</td>\n",
       "      <td>244.152512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>60.0</td>\n",
       "      <td>360.430813</td>\n",
       "      <td>360.938926</td>\n",
       "      <td>284.503415</td>\n",
       "      <td>287.227962</td>\n",
       "      <td>283.444481</td>\n",
       "      <td>318.860432</td>\n",
       "      <td>302.487126</td>\n",
       "      <td>290.436742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>70.0</td>\n",
       "      <td>410.707769</td>\n",
       "      <td>411.856553</td>\n",
       "      <td>339.624416</td>\n",
       "      <td>334.002407</td>\n",
       "      <td>352.340518</td>\n",
       "      <td>373.893731</td>\n",
       "      <td>358.706109</td>\n",
       "      <td>337.592163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100.0</td>\n",
       "      <td>559.224333</td>\n",
       "      <td>567.729677</td>\n",
       "      <td>496.742620</td>\n",
       "      <td>498.568802</td>\n",
       "      <td>507.103200</td>\n",
       "      <td>525.013485</td>\n",
       "      <td>514.165171</td>\n",
       "      <td>507.824032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>150.0</td>\n",
       "      <td>636.644583</td>\n",
       "      <td>639.476843</td>\n",
       "      <td>604.249611</td>\n",
       "      <td>607.167544</td>\n",
       "      <td>621.120924</td>\n",
       "      <td>623.326486</td>\n",
       "      <td>611.370204</td>\n",
       "      <td>606.450957</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of tasks          RR         SJF         FWA        SQSA         BAT  \\\n",
       "0         40.0  252.074720  253.429004  191.737029  194.908957  196.918389   \n",
       "1         50.0  292.362115  295.934033  240.600214  230.160551  246.386206   \n",
       "2         60.0  360.430813  360.938926  284.503415  287.227962  283.444481   \n",
       "3         70.0  410.707769  411.856553  339.624416  334.002407  352.340518   \n",
       "4        100.0  559.224333  567.729677  496.742620  498.568802  507.103200   \n",
       "5        150.0  636.644583  639.476843  604.249611  607.167544  621.120924   \n",
       "\n",
       "          PSO         BMO         SSA  \n",
       "0  222.808115  206.777716  199.265344  \n",
       "1  260.781770  248.552978  244.152512  \n",
       "2  318.860432  302.487126  290.436742  \n",
       "3  373.893731  358.706109  337.592163  \n",
       "4  525.013485  514.165171  507.824032  \n",
       "5  623.326486  611.370204  606.450957  "
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost_results_tasks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "id": "3ba6f3a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of tasks</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>40.0</td>\n",
       "      <td>1.628516</td>\n",
       "      <td>1.654265</td>\n",
       "      <td>1.001985</td>\n",
       "      <td>0.954076</td>\n",
       "      <td>1.050232</td>\n",
       "      <td>1.283493</td>\n",
       "      <td>1.094436</td>\n",
       "      <td>1.004018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50.0</td>\n",
       "      <td>1.793789</td>\n",
       "      <td>1.838367</td>\n",
       "      <td>1.316821</td>\n",
       "      <td>1.087307</td>\n",
       "      <td>1.395130</td>\n",
       "      <td>1.433944</td>\n",
       "      <td>1.291075</td>\n",
       "      <td>1.258292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>60.0</td>\n",
       "      <td>2.372618</td>\n",
       "      <td>2.380703</td>\n",
       "      <td>1.594865</td>\n",
       "      <td>1.506329</td>\n",
       "      <td>1.543471</td>\n",
       "      <td>1.879251</td>\n",
       "      <td>1.689366</td>\n",
       "      <td>1.588725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>70.0</td>\n",
       "      <td>2.502110</td>\n",
       "      <td>2.494817</td>\n",
       "      <td>1.850538</td>\n",
       "      <td>1.594127</td>\n",
       "      <td>1.956910</td>\n",
       "      <td>2.071446</td>\n",
       "      <td>1.907841</td>\n",
       "      <td>1.707665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100.0</td>\n",
       "      <td>3.356497</td>\n",
       "      <td>3.432659</td>\n",
       "      <td>2.798496</td>\n",
       "      <td>2.672749</td>\n",
       "      <td>2.873112</td>\n",
       "      <td>2.974152</td>\n",
       "      <td>2.873852</td>\n",
       "      <td>2.795056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>150.0</td>\n",
       "      <td>3.528709</td>\n",
       "      <td>3.535136</td>\n",
       "      <td>3.264491</td>\n",
       "      <td>3.287681</td>\n",
       "      <td>3.396261</td>\n",
       "      <td>3.410273</td>\n",
       "      <td>3.313241</td>\n",
       "      <td>3.285107</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of tasks        RR       SJF       FWA      SQSA       BAT       PSO  \\\n",
       "0         40.0  1.628516  1.654265  1.001985  0.954076  1.050232  1.283493   \n",
       "1         50.0  1.793789  1.838367  1.316821  1.087307  1.395130  1.433944   \n",
       "2         60.0  2.372618  2.380703  1.594865  1.506329  1.543471  1.879251   \n",
       "3         70.0  2.502110  2.494817  1.850538  1.594127  1.956910  2.071446   \n",
       "4        100.0  3.356497  3.432659  2.798496  2.672749  2.873112  2.974152   \n",
       "5        150.0  3.528709  3.535136  3.264491  3.287681  3.396261  3.410273   \n",
       "\n",
       "        BMO       SSA  \n",
       "0  1.094436  1.004018  \n",
       "1  1.291075  1.258292  \n",
       "2  1.689366  1.588725  \n",
       "3  1.907841  1.707665  \n",
       "4  2.873852  2.795056  \n",
       "5  3.313241  3.285107  "
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "energy_results_tasks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "d23039b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "cost_vm_df=pd.read_excel(\"cost vs vm 2.xlsx\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "61e65ab2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of VMs</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10</td>\n",
       "      <td>326.134301</td>\n",
       "      <td>325.055427</td>\n",
       "      <td>305.999589</td>\n",
       "      <td>308.243038</td>\n",
       "      <td>313.967940</td>\n",
       "      <td>316.306597</td>\n",
       "      <td>308.527742</td>\n",
       "      <td>309.106937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "      <td>469.203217</td>\n",
       "      <td>470.027151</td>\n",
       "      <td>440.749030</td>\n",
       "      <td>442.265115</td>\n",
       "      <td>448.529936</td>\n",
       "      <td>451.757597</td>\n",
       "      <td>444.996194</td>\n",
       "      <td>438.609238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "      <td>521.887581</td>\n",
       "      <td>537.192201</td>\n",
       "      <td>471.518600</td>\n",
       "      <td>470.558280</td>\n",
       "      <td>477.285336</td>\n",
       "      <td>492.576291</td>\n",
       "      <td>483.640668</td>\n",
       "      <td>469.892662</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25</td>\n",
       "      <td>514.367841</td>\n",
       "      <td>520.495522</td>\n",
       "      <td>436.748135</td>\n",
       "      <td>444.982467</td>\n",
       "      <td>444.579982</td>\n",
       "      <td>483.590251</td>\n",
       "      <td>460.975608</td>\n",
       "      <td>452.151844</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30</td>\n",
       "      <td>554.735821</td>\n",
       "      <td>557.707577</td>\n",
       "      <td>457.091269</td>\n",
       "      <td>471.076755</td>\n",
       "      <td>467.106928</td>\n",
       "      <td>507.733480</td>\n",
       "      <td>492.710554</td>\n",
       "      <td>485.973747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>35</td>\n",
       "      <td>561.387477</td>\n",
       "      <td>563.086056</td>\n",
       "      <td>444.342425</td>\n",
       "      <td>467.850121</td>\n",
       "      <td>443.784262</td>\n",
       "      <td>514.195227</td>\n",
       "      <td>490.930837</td>\n",
       "      <td>475.622897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>40</td>\n",
       "      <td>589.026509</td>\n",
       "      <td>586.415565</td>\n",
       "      <td>458.135727</td>\n",
       "      <td>481.232031</td>\n",
       "      <td>468.696792</td>\n",
       "      <td>524.026545</td>\n",
       "      <td>508.955408</td>\n",
       "      <td>494.651855</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of VMs          RR         SJF         FWA        SQSA         BAT  \\\n",
       "0         10  326.134301  325.055427  305.999589  308.243038  313.967940   \n",
       "1         15  469.203217  470.027151  440.749030  442.265115  448.529936   \n",
       "2         20  521.887581  537.192201  471.518600  470.558280  477.285336   \n",
       "3         25  514.367841  520.495522  436.748135  444.982467  444.579982   \n",
       "4         30  554.735821  557.707577  457.091269  471.076755  467.106928   \n",
       "5         35  561.387477  563.086056  444.342425  467.850121  443.784262   \n",
       "6         40  589.026509  586.415565  458.135727  481.232031  468.696792   \n",
       "\n",
       "          PSO         BMO         SSA  \n",
       "0  316.306597  308.527742  309.106937  \n",
       "1  451.757597  444.996194  438.609238  \n",
       "2  492.576291  483.640668  469.892662  \n",
       "3  483.590251  460.975608  452.151844  \n",
       "4  507.733480  492.710554  485.973747  \n",
       "5  514.195227  490.930837  475.622897  \n",
       "6  524.026545  508.955408  494.651855  "
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost_vm_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "09b43360",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(25,20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "40a2cbce",
   "metadata": {},
   "outputs": [],
   "source": [
    "bar_width = 0.09\n",
    "r1 = range(len(cost_vm_df['No of VMs']))\n",
    "r2 = [x + bar_width for x in r1]\n",
    "r3 = [x + bar_width for x in r2]\n",
    "r4 = [x + bar_width for x in r3]\n",
    "r5 = [x + bar_width for x in r4]\n",
    "r6 = [x + bar_width for x in r5]\n",
    "r7 = [x + bar_width for x in r6]\n",
    "r8 = [x + bar_width for x in r7]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "2a19b02b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yXu+KNu3tigUFR/GElFx5S/j07niZWR8VKzGt9Uzt6j+qtv96vne6fg7WHXcr6qnspzyOF48QRJDQ0N88803mDRpUpXuWUdERET1Cw/FkhZDQ0P861//0nUziIiIak1Fz3uvznPZ6xuO2BERERHJBIMdERERkUww2BERERHJBIMdERERkUzw4gkiql2V3N4AvNsSEVGN4ogdERERkUxwxI6IiOi5IZ+b7lLt4IgdERERkUww2FWXQlG3UzUEBARAoVBIk6WlJfr164fz58+Xqfvmm29CT08PERERpbqoqHQKCAio7tYjIiKiWsBgJ3P9+vVDSkoKUlJS8NNPP0GpVGLgwIFadXJzc7F7927MmzcPYWFhUnnJcikpKVi7di3MzMy0ytatW1fX3SEiIqJK8Bw7mVOpVFCr1QAAtVqN+fPno0ePHrh79y6sra0BAHv27IG7uzsWLFgAOzs73LhxA05OTtJyAGBubg6FQqFVRvSseMEsEVHNYrB7gWRnZ2Pnzp1wcXGBpaWlVB4WFoYJEybA3NwcAwYMwNatW7F06VIdtpSeRxU+e7GO20HyIudnehLVBh6KlbkDBw7AxMQEJiYmMDU1xf79+7F79240aPDoo7927RpiY2MxevRoAMCECROwdetWFBcX67LZlZ7bR7qkqGQiIiJdY7CTuZ49eyIhIQEJCQn49ddf4e/vj/79++PmzZsAHo3W9e3bF1ZWVgCAAQMGICcnB0eOHNFlsysXfbriiYiIqLpq+CJGXeChWJkzNjaGi4uL9NrT0xPm5ubYvHkzli5diu3btyM1NRVK5f92haKiIoSFhcHf318XTSYiomrgYWsCGOxeOAqFAg0aNEBeXh4OHjyIrKwsnD17Fnp6elKdy5cvY/z48bh3757WuXhERPUGr7whKheDncxpNBqkpqYCANLT07F+/XpkZ2dj0KBBWLt2LV599VW0b99ea5k2bdogMDAQO3bswOzZs3XRbCIiIqoGnmMncz/88APs7OxgZ2cHLy8vxMXFYc+ePWjdujW+++47DB8+vMwyCoUCw4YN07qnHREREdV/HLGrrudgqD88PBzh4eEVzi8sLKxw3ieffKL1OiAggE+aICIiquc4YkdEREQkEwx2RERERDLBYEdEREQkEzzHjoiouiq7Z2n9Pw2XiGSII3ZEREREMsFgR0RERCQTPBRLRERE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RERERPSUnirYLVmyBACwdOlSNG3aFFOnTpXmGRkZoVWrVhg4cGDNtpCIiIiIqqRawe7YsWNo06aN9JqIiIiIdK9aF09ERUVpvY6Li8OJEyfQtm1b+Pn51US7iIiIiOgpVSvYTZw4EV9++SWioqIghECvXr1QXFwMANi8eTOmTJlSo40kIiIioier1pMnTp06BWNjY7z00kvYuXMnioqK0Lx5cwghsH79+ppuIxERERFVQbWC3V9//QUnJycoFAokJCTA3d0d165dg7OzM/7444+abiMRERERVUG1gl2DBg2g0WgAAFeuXIGHhwcAwMzMDEVFRTXXOiIiIiKqsmoFuxYtWuDatWtwdXVFZmYmOnfuDAC4ffs27O3ta7SBRERERFQ11Qp277zzDgDgjz/+gIWFBSZOnIjExETcvXsXXbp0qdEGEhEREVHVVOuq2EmTJqFDhw74/fff8dJLL8HW1hbFxcU4fPiw1mPGiIiIiKjuVCvYAUC7du3g5uaGixcv4tatW2jTpg169+5dk20jIiIioqdQrUOxABASEgIrKyt07doVXbt2hZWVFVauXFmTbSMiIiKip1CtYLd161YsWrQIubm5EEJACIHc3FwsWrQI27Ztq+k2EhEREVEVVCvYldyE+LXXXsPu3buxe/duDB06FEIIfPLJJzXaQCIiIiKqmmqdY3fp0iU4OTlh7969UtnIkSPh7OyMS5cu1VjjiIiIiKjqqjVip6enh/z8fDx8+FAqKywsRH5+PvT09GqscURERERUddUasevQoQNiYmLQo0cPDBs2DAqFAnv37kVaWhq8vb1ruo1EREREVAXVCnbz5s3D0KFD8euvv+LXX38FAAghAADvvvtuzbWOiIiIiKqsWodiBw8ejO3bt8PBwUG6KrZZs2bYsWMHBg0aVNNtJCIiIqIqeKoRuxs3buD48eNwc3PDhAkTMGHCBNy9excA8Pvvv+PatWtISkqCs7NzrTSWiIiIiCr2VCN2//nPf/D6668jMzNTKrO2toa1tTVyc3Px+uuv8ybFRERERDryVMHu6NGjMDMzg7+/f5l5vXv3hoWFBY4ePVpjjSMiIiKiqnuqYHfr1i00a9aswvkODg7466+/nrlRRERERPT0nirYKZVK3Lx5E8XFxWXmFRUV4caNG9DX16+xxhERERFR1T1VsGvdujWysrKwaNGiMvMWL16MzMxMtG7dusYaR0RERERV91RXxY4aNQqnTp3CqlWr8OOPP+KVV16BQqHAiRMncPbsWSgUCowePbq22kpERERElXiqYDdz5kzs2LEDCQkJOHfuHM6dOyfNE0KgU6dOmDlzZo03koiIiIie7KkOxapUKhw9ehRjx46Fnp6edHNiPT09jBs3DkeOHIGBgUFttZWIiIiIKvHUjxSzsLDAzp07sWHDBly9ehVCCLRs2RJmZma10T4iIiIiqqJqPSsWAMzMzNC5c+eabAsRERERPYNqPSuWiIiIiOofBjsiIiIimWCwIyIiIpIJBjsiIiIimag3wS4kJAQKhQKBgYFSmRACwcHBsLe3R8OGDeHr64uLFy9qLafRaDBr1ixYWVnB2NgYgwcPxq1bt+q49URERES6Vy+CXVxcHDZt2oR27dppla9atQoff/wx1q9fj7i4OKjVavTp0wdZWVlSncDAQERGRiIiIgInTpxAdnY2Bg4ciKKiorruBhEREZFO6TzYZWdnY/z48di8eTMaNWoklQshsHbtWixatAjDhg2Dh4cHtm3bhtzcXOzatQsAkJGRgbCwMKxevRp+fn7o2LEjduzYgcTERBw5ckRXXSIiIiLSCZ0Hu5kzZ+LVV1+Fn5+fVnlSUhJSU1Ph7+8vlalUKvj4+CAmJgYAEB8fj8LCQq069vb28PDwkOqUR6PRIDMzU2siIiIiet5V+wbFNSEiIgJnzpxBXFxcmXmpqakAAFtbW61yW1tb3Lx5U6pjYGCgNdJXUqdk+fKEhIRg6dKlz9p8IiIionpFZyN2ycnJmD17Nnbs2AFDQ8MK6ykUCq3XQogyZY97Up0FCxYgIyNDmpKTk5+u8URERET1kM6CXXx8PNLS0uDp6QmlUgmlUono6Gh88sknUCqV0kjd4yNvaWlp0jy1Wo2CggKkp6dXWKc8KpUKZmZmWhMRERHR805nwa53795ITExEQkKCNHXu3Bnjx49HQkICmjdvDrVajcOHD0vLFBQUIDo6Gt7e3gAAT09P6Ovra9VJSUnBhQsXpDpERERELwqdnWNnamoKDw8PrTJjY2NYWlpK5YGBgVixYgVcXV3h6uqKFStWwMjICOPGjQMAmJubY+rUqZg7dy4sLS3RuHFjBAUFoW3btmUuxiAiIiKSO51ePPEk7777LvLy8jBjxgykp6fDy8sLhw4dgqmpqVRnzZo1UCqVGDVqFPLy8tC7d2+Eh4dDT09Phy0nIiIiqnv1KthFRUVpvVYoFAgODkZwcHCFyxgaGiI0NBShoaG12zgiIiKiek7n97EjIiIioprBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEzoNdhs2bEC7du1gZmYGMzMzdO/eHd9//700PyAgAAqFQmvq1q2b1jo0Gg1mzZoFKysrGBsbY/Dgwbh161Zdd4WIiIhI53Qa7Jo2bYqVK1fi9OnTOH36NHr16oUhQ4bg4sWLUp1+/fohJSVFmg4ePKi1jsDAQERGRiIiIgInTpxAdnY2Bg4ciKKiorruDhEREZFOKXX55oMGDdJ6vXz5cmzYsAGxsbFo06YNAEClUkGtVpe7fEZGBsLCwvDFF1/Az88PALBjxw44ODjgyJEj6Nu3b+12gIiIiKgeqTfn2BUVFSEiIgI5OTno3r27VB4VFQUbGxu4ublh2rRpSEtLk+bFx8ejsLAQ/v7+Upm9vT08PDwQExNT4XtpNBpkZmZqTURERETPO50Hu8TERJiYmEClUuEf//gHIiMj4e7uDgDo378/du7ciaNHj2L16tWIi4tDr169oNFoAACpqakwMDBAo0aNtNZpa2uL1NTUCt8zJCQE5ubm0uTg4FB7HSQiIiKqIzo9FAsALVu2REJCAh48eIC9e/di8uTJiI6Ohru7O0aPHi3V8/DwQOfOneHo6IjvvvsOw4YNq3CdQggoFIoK5y9YsABz5syRXmdmZjLcERER0XNP58HOwMAALi4uAIDOnTsjLi4O69atw2ef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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(r1, cost_vm_df['SJF'], color='black', width=bar_width, label='SJF')\n",
    "plt.bar(r2, cost_vm_df['RR'], color='pink', width=bar_width, label='RR')\n",
    "plt.bar(r3, cost_vm_df['PSO'], color='cyan', width=bar_width, label='PSO')\n",
    "plt.bar(r4, cost_vm_df['BMO'], color='magenta', width=bar_width, label='BMO')\n",
    "plt.bar(r5, cost_vm_df['SSA'], color='yellow', width=bar_width, label='SSA')\n",
    "\n",
    "plt.bar(r6, cost_vm_df['SQSA'], color='green', width=bar_width, label='SQSA')\n",
    "plt.bar(r7, cost_vm_df['BAT'], color='red', width=bar_width, label='BAT')\n",
    "\n",
    "plt.bar(r8, cost_vm_df['FWA'], color='blue', width=bar_width, label='FWA')\n",
    "\n",
    "plt.xlabel('Number of VMs', fontweight='bold')\n",
    "plt.ylabel('Cost', fontweight='bold')\n",
    "plt.title('Costs for different allocation algorithms', fontweight='bold')\n",
    "plt.xticks([r + bar_width*3.5 for r in range(len(cost_vm_df['No of VMs']))], cost_vm_df['No of VMs'])\n",
    "\n",
    "plt.ylim(250, 600)\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "066911ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "cost_task_df=pd.read_excel(\"cost vs task 2.xlsx\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "9904bf7f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of Tasks</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>40</td>\n",
       "      <td>221.864169</td>\n",
       "      <td>222.761101</td>\n",
       "      <td>181.307046</td>\n",
       "      <td>172.153725</td>\n",
       "      <td>186.156727</td>\n",
       "      <td>198.402897</td>\n",
       "      <td>188.848631</td>\n",
       "      <td>183.965532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50</td>\n",
       "      <td>270.011023</td>\n",
       "      <td>270.357121</td>\n",
       "      <td>208.241274</td>\n",
       "      <td>209.479435</td>\n",
       "      <td>220.202021</td>\n",
       "      <td>237.145815</td>\n",
       "      <td>229.112199</td>\n",
       "      <td>213.419658</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>60</td>\n",
       "      <td>360.430813</td>\n",
       "      <td>360.938926</td>\n",
       "      <td>284.503415</td>\n",
       "      <td>287.227962</td>\n",
       "      <td>283.444481</td>\n",
       "      <td>318.860432</td>\n",
       "      <td>302.487126</td>\n",
       "      <td>290.436742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>70</td>\n",
       "      <td>410.707769</td>\n",
       "      <td>411.856553</td>\n",
       "      <td>339.624416</td>\n",
       "      <td>334.002407</td>\n",
       "      <td>352.340518</td>\n",
       "      <td>373.893731</td>\n",
       "      <td>358.706109</td>\n",
       "      <td>337.592163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100</td>\n",
       "      <td>573.587505</td>\n",
       "      <td>573.233991</td>\n",
       "      <td>461.384704</td>\n",
       "      <td>483.394960</td>\n",
       "      <td>468.268521</td>\n",
       "      <td>520.994189</td>\n",
       "      <td>503.206992</td>\n",
       "      <td>490.611581</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>150</td>\n",
       "      <td>773.910720</td>\n",
       "      <td>781.438072</td>\n",
       "      <td>669.669981</td>\n",
       "      <td>695.876084</td>\n",
       "      <td>675.685703</td>\n",
       "      <td>730.470104</td>\n",
       "      <td>712.962478</td>\n",
       "      <td>706.197953</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of Tasks          RR         SJF         FWA        SQSA         BAT  \\\n",
       "0           40  221.864169  222.761101  181.307046  172.153725  186.156727   \n",
       "1           50  270.011023  270.357121  208.241274  209.479435  220.202021   \n",
       "2           60  360.430813  360.938926  284.503415  287.227962  283.444481   \n",
       "3           70  410.707769  411.856553  339.624416  334.002407  352.340518   \n",
       "4          100  573.587505  573.233991  461.384704  483.394960  468.268521   \n",
       "5          150  773.910720  781.438072  669.669981  695.876084  675.685703   \n",
       "\n",
       "          PSO         BMO         SSA  \n",
       "0  198.402897  188.848631  183.965532  \n",
       "1  237.145815  229.112199  213.419658  \n",
       "2  318.860432  302.487126  290.436742  \n",
       "3  373.893731  358.706109  337.592163  \n",
       "4  520.994189  503.206992  490.611581  \n",
       "5  730.470104  712.962478  706.197953  "
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost_task_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "94d40602",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(25,20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "2006e90b",
   "metadata": {},
   "outputs": [],
   "source": [
    "bar_width = 0.09\n",
    "r1 = range(len(cost_task_df['No of Tasks']))\n",
    "r2 = [x + bar_width for x in r1]\n",
    "r3 = [x + bar_width for x in r2]\n",
    "r4 = [x + bar_width for x in r3]\n",
    "r5 = [x + bar_width for x in r4]\n",
    "r6 = [x + bar_width for x in r5]\n",
    "r7 = [x + bar_width for x in r6]\n",
    "r8 = [x + bar_width for x in r7]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "39703326",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(r1, cost_task_df['SJF'], color='black', width=bar_width, label='SJF')\n",
    "plt.bar(r2, cost_task_df['RR'], color='pink', width=bar_width, label='RR')\n",
    "plt.bar(r3, cost_task_df['PSO'], color='cyan', width=bar_width, label='PSO')\n",
    "plt.bar(r4, cost_task_df['BMO'], color='magenta', width=bar_width, label='BMO')\n",
    "plt.bar(r5, cost_task_df['SSA'], color='yellow', width=bar_width, label='SSA')\n",
    "plt.bar(r6, cost_task_df['SQSA'], color='green', width=bar_width, label='SQSA')\n",
    "plt.bar(r7, cost_task_df['BAT'], color='red', width=bar_width, label='BAT')\n",
    "plt.bar(r8, cost_task_df['FWA'], color='blue', width=bar_width, label='FWA')\n",
    "\n",
    "plt.xlabel('Number of Tasks', fontweight='bold')\n",
    "plt.ylabel('Cost', fontweight='bold')\n",
    "plt.title('Costs for different allocation algorithms', fontweight='bold')\n",
    "plt.xticks([r + bar_width*3.5 for r in range(len(cost_task_df['No of Tasks']))], cost_task_df['No of Tasks'])\n",
    "\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "8cdb7fe2",
   "metadata": {},
   "outputs": [],
   "source": [
    "energy_vm_df=pd.read_excel(\"energy vs vm 2.xlsx\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "b9524524",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of VMs</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10</td>\n",
       "      <td>1.690669</td>\n",
       "      <td>1.681327</td>\n",
       "      <td>1.539971</td>\n",
       "      <td>1.542770</td>\n",
       "      <td>1.592983</td>\n",
       "      <td>1.602920</td>\n",
       "      <td>1.541886</td>\n",
       "      <td>1.538309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>15</td>\n",
       "      <td>2.713577</td>\n",
       "      <td>2.737240</td>\n",
       "      <td>2.492727</td>\n",
       "      <td>2.437267</td>\n",
       "      <td>2.564152</td>\n",
       "      <td>2.542549</td>\n",
       "      <td>2.480072</td>\n",
       "      <td>2.441914</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20</td>\n",
       "      <td>2.865236</td>\n",
       "      <td>3.015303</td>\n",
       "      <td>2.482737</td>\n",
       "      <td>2.293156</td>\n",
       "      <td>2.492973</td>\n",
       "      <td>2.574584</td>\n",
       "      <td>2.464807</td>\n",
       "      <td>2.350688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25</td>\n",
       "      <td>2.881187</td>\n",
       "      <td>2.973211</td>\n",
       "      <td>2.181896</td>\n",
       "      <td>2.154178</td>\n",
       "      <td>2.304066</td>\n",
       "      <td>2.587685</td>\n",
       "      <td>2.324047</td>\n",
       "      <td>2.203588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>30</td>\n",
       "      <td>3.431461</td>\n",
       "      <td>3.463336</td>\n",
       "      <td>2.452345</td>\n",
       "      <td>2.404746</td>\n",
       "      <td>2.589216</td>\n",
       "      <td>2.868654</td>\n",
       "      <td>2.707426</td>\n",
       "      <td>2.638588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>35</td>\n",
       "      <td>3.450209</td>\n",
       "      <td>3.462311</td>\n",
       "      <td>2.306849</td>\n",
       "      <td>2.357581</td>\n",
       "      <td>2.314211</td>\n",
       "      <td>2.928384</td>\n",
       "      <td>2.607616</td>\n",
       "      <td>2.466589</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>40</td>\n",
       "      <td>3.725988</td>\n",
       "      <td>3.693244</td>\n",
       "      <td>2.386503</td>\n",
       "      <td>2.437955</td>\n",
       "      <td>2.534019</td>\n",
       "      <td>2.960306</td>\n",
       "      <td>2.788281</td>\n",
       "      <td>2.604782</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of VMs        RR       SJF       FWA      SQSA       BAT       PSO  \\\n",
       "0         10  1.690669  1.681327  1.539971  1.542770  1.592983  1.602920   \n",
       "1         15  2.713577  2.737240  2.492727  2.437267  2.564152  2.542549   \n",
       "2         20  2.865236  3.015303  2.482737  2.293156  2.492973  2.574584   \n",
       "3         25  2.881187  2.973211  2.181896  2.154178  2.304066  2.587685   \n",
       "4         30  3.431461  3.463336  2.452345  2.404746  2.589216  2.868654   \n",
       "5         35  3.450209  3.462311  2.306849  2.357581  2.314211  2.928384   \n",
       "6         40  3.725988  3.693244  2.386503  2.437955  2.534019  2.960306   \n",
       "\n",
       "        BMO       SSA  \n",
       "0  1.541886  1.538309  \n",
       "1  2.480072  2.441914  \n",
       "2  2.464807  2.350688  \n",
       "3  2.324047  2.203588  \n",
       "4  2.707426  2.638588  \n",
       "5  2.607616  2.466589  \n",
       "6  2.788281  2.604782  "
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "energy_vm_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "5d8c703e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(25,20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "672abaea",
   "metadata": {},
   "outputs": [],
   "source": [
    "bar_width = 0.09\n",
    "r1 = range(len(energy_vm_df['No of VMs']))\n",
    "r2 = [x + bar_width for x in r1]\n",
    "r3 = [x + bar_width for x in r2]\n",
    "r4 = [x + bar_width for x in r3]\n",
    "r5 = [x + bar_width for x in r4]\n",
    "r6 = [x + bar_width for x in r5]\n",
    "r7 = [x + bar_width for x in r6]\n",
    "r8 = [x + bar_width for x in r7]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "1d49b054",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/n7mmWeUnJwsY4xGjx5d4GVllXVdf/vtN6eLXbJegZrZLjAw0BqXeaFEThYuXGj9PXv2bJ0/f17GGN1///05ti9Mn+S2bedU99Xy8zrlJOt6ffLJJ9bnTYsWLfI1f6VKlaxwdubMGacLPHL6fCno65NVft+/mfLbDwXtu8zP5/yOz+Th4aEFCxbo1KlT2rBhg95//3099NBDkqSvvvrqmgEbhUewg0t5eXmpe/fukq5cITdkyBAdOHBA6enpOnz4sObPn6/bb7/daS9YXjp37mztwfnss8+0atUqnTt3Tu+++642b96c77r+9re/SZKMMRo8eLB27Nih9PR0HT16VB9//LG6d++u9957T5K0bt06TZkyRT///LNCQkJ03333Od1c+NChQ/l+3qvde++91t+vvvqqEhMTlZycrOeee87aW9e4ceNse+sKokGDBtYekxMnTuill15ScnKy4uPjna5yLS6hoaFq2rSpJGnnzp0aO3askpKSlJ6ern379unNN99UeHh4vkNm1r6fPn26Vq5cqZSUFJ07d07x8fF66qmncg0o+eHv72/9/dNPP+Vrj3PWL8Hy5cvL3d1d33zzjdPVpIURGhpq7YH5448/NGnSJJ05c0aJiYl69dVXrXaZ21HW9f73v/+txYsXKzk5WcePH9eiRYu0ZcuWbPV6e3vL4XDo008/1eeff55jHVn7ZNu2bfm6V2HWbXv8+PE6cuSIkpKSNH78+BzbFIWs6+Xj46NLly7p7bff1tatW/M1f/ny5XXHHXdIuvLZMG7cOJ06dUrbt2/Xv//972ztC/r6XI+sr0FpuOn30qVLNXv2bO3fv1+NGjVSnz591LlzZ2v69Xwu4hpK6pgvbmzXOsdOWc61yu0kb2NyPtdm37591zynLfO8ndxOaM4qp6tiJZnq1atbf8fFxeVZ08mTJ02TJk3yrCnz/Kr33nsvz3avv/76Nfs3t/NjMjIyzP3335/rssuXL2++++47q/21znXKzZIlS3I83yjrFXHFefHE5s2bja+v73VvX5mynhuY05B128mt5tzqTUhIyLO+nCxevDjHeRo0aJDjcxTk4onvvvvOlC9fPtd1vf/++52uih00aFCubTOvip02bVq2aWXKlDH16tXLtv0b43xRRtYhU07vsePHj5v69evnWkv9+vWt8yBz65O8Xr+cPPbYYzm+h3K6Yj63z5pNmzbleFVs1s+wqKioQr0++fl8y60fsl6scPUyCvqZnNt5pFn7Ouv4nD4PXnrppTzfg5999lmerxUKjz12cLk6deooMTFR48aNU+PGjeXl5aVy5cqpbt266tWrl+bMmZPvQyXSlfODpkyZolq1asnDw0Ph4eH6+OOPnW6Ee/W5VVerXLmyNm3apJdeekm33nqrKlSoIE9PT9WuXVtdunTRzJkz1aNHD0lXzmUbOnSobrnlFlWuXFlly5aVj4+P2rVrp7ffflsjRowoVL9IVw6VLFmyRHPnzlW7du3k4+MjNzc31axZU4MHD9bWrVt12223FXr5mR544AEtXbpU4eHh8vDwUM2aNfXcc8/p5Zdfvu5l50fr1q21bds2PfHEEwoNDZWnp6e8vb1Vv3599e3bV7GxsQU6T3HKlClauXKlevbsqYCAALm5uSkgIEAtWrTQ008/ralTpxa61pYtW+rNN99U/fr15eHhka95+vXrp7lz56pBgwby9PRUWFiY3nnnHevQ1PW47bbbtHXrVkVFRalmzZpyd3eXt7e32rZtqzlz5mjJkiVOh9zmz5+vRYsWqVOnTqpcubLc3NxUtWpVdenSxTqfauzYsXrxxRcVEhIiT09PNWvWTMuWLbP2Vl3t/vvv16RJkxQSEnLNQ3SZAgICtGXLFk2cONF633t6eqpRo0aaMGGCtmzZcs33aUHNnDlTo0aNUvXq1eXl5aWIiAitXr26QHu827RpozVr1igiIkKenp6qVq2ann76aaf3Sta6C/r6FNbkyZPVv39/VatWrUiWd706deqkgQMHqmHDhvLz81OZMmVUqVIldejQQZ988onuueceV5doWw5jjHF1EUBR2rNnj86fP69mzZpZ41asWKG+ffsqLS1NNWvW1IEDB7KddA8A+fHZZ5+pc+fO1sUEBw8eVN++fa1D2atXr3Y67AiUJK6Khe189913evjhh1WuXDlVqVJFp06dsu6I7unpqXfffZdQB6DQ7r33XpUtW1YBAQHKyMjQiRMnrF9SePjhhwl1cCm+3WA7t9xyi+655x5VrlxZx44dU3p6ukJDQzVs2DAlJiaqa9euri4RwA1s6NChatCggVJSUvTnn38qICBA3bt314cffqh58+a5ujzc5DgUCwAAYBPssQMAALAJgh0AAIBNEOwAAABs4qa7KjYjI0NHjhyR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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(r1, energy_vm_df['SJF'], color='black', width=bar_width, label='SJF')\n",
    "plt.bar(r2, energy_vm_df['RR'], color='pink', width=bar_width, label='RR')\n",
    "plt.bar(r3, energy_vm_df['PSO'], color='cyan', width=bar_width, label='PSO')\n",
    "plt.bar(r4, energy_vm_df['BMO'], color='magenta', width=bar_width, label='BMO')\n",
    "plt.bar(r5, energy_vm_df['SSA'], color='yellow', width=bar_width, label='SSA')\n",
    "\n",
    "plt.bar(r6, energy_vm_df['SQSA'], color='green', width=bar_width, label='SQSA')\n",
    "plt.bar(r7, energy_vm_df['BAT'], color='red', width=bar_width, label='BAT')\n",
    "\n",
    "plt.bar(r8, energy_vm_df['FWA'], color='blue', width=bar_width, label='FWA')\n",
    "\n",
    "plt.xlabel('Number of VMs', fontweight='bold')\n",
    "plt.ylabel('Energy', fontweight='bold')\n",
    "plt.title('Energies for different allocation algorithms', fontweight='bold')\n",
    "plt.xticks([r + bar_width*3.5 for r in range(len(energy_vm_df['No of VMs']))], energy_vm_df['No of VMs'])\n",
    "\n",
    "plt.ylim(1)\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "1cd2954e",
   "metadata": {},
   "outputs": [],
   "source": [
    "energy_task_df=pd.read_excel(\"Energy vs task 2.xlsx\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "671babfc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>No of Tasks</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>40</td>\n",
       "      <td>1.628516</td>\n",
       "      <td>1.654265</td>\n",
       "      <td>1.001985</td>\n",
       "      <td>0.954076</td>\n",
       "      <td>1.050232</td>\n",
       "      <td>1.283493</td>\n",
       "      <td>1.094436</td>\n",
       "      <td>1.004018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50</td>\n",
       "      <td>1.793789</td>\n",
       "      <td>1.838367</td>\n",
       "      <td>1.316821</td>\n",
       "      <td>1.087307</td>\n",
       "      <td>1.395130</td>\n",
       "      <td>1.433944</td>\n",
       "      <td>1.291075</td>\n",
       "      <td>1.258292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>60</td>\n",
       "      <td>2.372618</td>\n",
       "      <td>2.380703</td>\n",
       "      <td>1.594865</td>\n",
       "      <td>1.506329</td>\n",
       "      <td>1.543471</td>\n",
       "      <td>1.879251</td>\n",
       "      <td>1.689366</td>\n",
       "      <td>1.588725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>70</td>\n",
       "      <td>2.502110</td>\n",
       "      <td>2.494817</td>\n",
       "      <td>1.850538</td>\n",
       "      <td>1.594127</td>\n",
       "      <td>1.956910</td>\n",
       "      <td>2.071446</td>\n",
       "      <td>1.907841</td>\n",
       "      <td>1.707665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100</td>\n",
       "      <td>3.356497</td>\n",
       "      <td>3.432659</td>\n",
       "      <td>2.798496</td>\n",
       "      <td>2.672749</td>\n",
       "      <td>2.873112</td>\n",
       "      <td>2.974152</td>\n",
       "      <td>2.873852</td>\n",
       "      <td>2.795056</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>150</td>\n",
       "      <td>3.528709</td>\n",
       "      <td>3.535136</td>\n",
       "      <td>3.264491</td>\n",
       "      <td>3.287681</td>\n",
       "      <td>3.396261</td>\n",
       "      <td>3.410273</td>\n",
       "      <td>3.313241</td>\n",
       "      <td>3.285107</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   No of Tasks        RR       SJF       FWA      SQSA       BAT       PSO  \\\n",
       "0           40  1.628516  1.654265  1.001985  0.954076  1.050232  1.283493   \n",
       "1           50  1.793789  1.838367  1.316821  1.087307  1.395130  1.433944   \n",
       "2           60  2.372618  2.380703  1.594865  1.506329  1.543471  1.879251   \n",
       "3           70  2.502110  2.494817  1.850538  1.594127  1.956910  2.071446   \n",
       "4          100  3.356497  3.432659  2.798496  2.672749  2.873112  2.974152   \n",
       "5          150  3.528709  3.535136  3.264491  3.287681  3.396261  3.410273   \n",
       "\n",
       "        BMO       SSA  \n",
       "0  1.094436  1.004018  \n",
       "1  1.291075  1.258292  \n",
       "2  1.689366  1.588725  \n",
       "3  1.907841  1.707665  \n",
       "4  2.873852  2.795056  \n",
       "5  3.313241  3.285107  "
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "energy_task_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "5789232c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(25,20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "41ac8f9a",
   "metadata": {},
   "outputs": [],
   "source": [
    "bar_width = 0.09\n",
    "r1 = range(len(energy_task_df['No of Tasks']))\n",
    "r2 = [x + bar_width for x in r1]\n",
    "r3 = [x + bar_width for x in r2]\n",
    "r4 = [x + bar_width for x in r3]\n",
    "r5 = [x + bar_width for x in r4]\n",
    "r6 = [x + bar_width for x in r5]\n",
    "r7 = [x + bar_width for x in r6]\n",
    "r8 = [x + bar_width for x in r7]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "cc1a3858",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABboklEQVR4nO3deXhMZ/8/8PfIJJM9yB6JLEIQtQURRaKIpVQr9aW1JLW0Sm2hPNKntT3Eo5a01VJEQlGqKbVVi2bQEoSk1K4SUklsJSFkv39/+OU8GZnsyyTH+3Vd57oy97nPmc+5ZzJ552yjEEIIEBEREVGdV0/XBRARERFR1WCwIyIiIpIJBjsiIiIimWCwIyIiIpIJBjsiIiIimWCwIyIiIpIJBjsiIiIimWCwIyIiIpIJBjsiIiIimWCwozKZO3cuFApFsVP9+vV1XWKFFWyDi4uLzmq4c+cORo0aBQcHByiVSigUCrz++us6q6dAZGSkND5z586V2v38/KT2xMREqT0/Px+ffPIJmjRpAkNDwyLvjW+//Rbt27eHmZmZtHx8fHyNbU9VUKvVmDt3LubOnVtttbu4uEjjU/h5C9qCgoKq5XkraufOndKYFH4/FKgNv2PllZiYKNXt5+en63Ik2t4bABAWFia9Bs+rze8dqnpKXRdARMCUKVOwdetWXZdRaWvXrsWCBQu0zrt48SJGjBiB/Pz8Gq6qaqnVasybNw/Asz+ybdu21W1BtcDOnTuxYcMGAM9Cf10KcHIRFhaGGzduAIDWcEcvDu6xo3ILDAyEEEJjevjwoa7LwpMnTyq0XME2aNvTUFNOnz4t/ZyQkAAhBHbu3Fll68/JyUFubm6VrU+tVkvjVviPeOHtiIyMRH5+vvTeiIuLk0Ld6NGjkZubCyFElQajir4HqHrVht+xuq7gvZ2YmCiNJ5E2DHZU5Z7f7b9582a0adMGRkZGaNq0KVasWFHkQ+nOnTuYPn06mjdvDiMjI5iYmKBjx474+uuvNfo+f3hkz5496NChAwwNDTFhwgQAz/6ILF68GC4uLjA0NET79u3x448/IigoSFpWrVZL6yzuMNHjx48xb948tG7dGiYmJjAyMsJLL72ExYsXIzs7W6Pvnj174OvriwYNGkCpVMLS0hJt27bFmDFj8ODBg2LHquBQ59WrV6U2V1dXjUOfQgisW7cOL7/8MiwsLGBgYABnZ2eMHj0a165d01hf4W3cuXMnxo8fD1tbW6hUKvz9998lvm47duxA27ZtYWhoCBcXF/znP/9BXl6e1r7PH4oteF3Wrl2rUUu9evWkPTjDhw+X5q1fv1465FwgISEB7733Htzc3KBSqWBubo7u3btj+/btGs/9/PsrIiICrVq1goGBAZYsWSL1+/HHH9GnTx9YWlpCX18fjRo1wqhRozTG+vkx27VrFyZPngx7e3uYmZmhW7duGmFVoVBIe+sA4J133pGWjYyMLHF8p06dik6dOkmvh7GxMTw8PDB16lTcu3evxGVLc+3aNYwZMwYuLi4wMDCAubk5unTpgrVr12oNAFu3bkXv3r1hZWUFAwMD2NnZoU+fPvjzzz8BAJmZmXjnnXfQtm1bWFtbw8DAACYmJmjdujU++eQTZGRkAPjf72PB3joA6NGjR5Hfs+J+xx49eoSPP/4YrVq1grGxMYyMjODp6Yl///vfSE9P1+hb+BDklStX8MYbb8DCwgLW1tYYOnQo7ty5U+o4paSkYPjw4fD09JTeF+bm5ujQoQOWL19e5n9+fv/9d7z88sswMjKCg4MDZs6ciZ9++qnYw51lfX3K8vn2/KHYgs+Qgr11hcf7+cO1BXbu3AkvL69iP5MLn3rz9ddfY+bMmbC1tYWZmRkCAgKQmpqK5ORkDB06FObm5mjUqBHGjx+Px48fazxPZGQkvL29YW5uDn19fdjY2KBTp06YMGECg2l1EkRlMGfOHAFAABCBgYEl9o2Ojpb6NmjQQPq58LRlyxap/19//SXs7e219gMghg0bJvVNSEjQWHe9evWK1DV16tQi61AoFMLR0VF6HB0dLa2zoM3Z2Vlqu3//vmjZsmWxNXXv3l1kZWUJIYSIjY0VSqWy2L5Xr14tdqwiIiKKXW7OnDkiPz9fDBkypNg+pqamIiYmRlpfYGCgNM/Kykqjb0JCQrF1fP/990KhUBRZf6NGjTTqKeDr66ux3sKvy/OTr6+vcHZ2Lna+EEKcPHlSmJmZFdvnX//6l9b31/PbWFDjrFmzShyzU6dOaR0zbe9XKysrkZaWpvFe0TZFREQUO75CCGFhYVHssp6eniI7O1vqW3i8tG134d/B48ePC1NT02LXPWTIEJGfny/1HzlyZLF9d+zYIYQQ4sGDByVuq7+/vxBClPi6F/490/Y7dvfuXeHh4VHssh4eHuLevXtax0Tb61RQU0ni4uJKrPfdd9+V+hbeNl9fX6k9JiZGqFSqIss6OTlV+vUpy+fb8++Nkj5DCvoUfu/Y2tpq7Vf4M7nw5721tXWRvl5eXsLd3b3E8duxY0eJdeXk5JT6elHFMNhRmRT+Rdc2Ff4gK/whAkAsX75cpKWliS+++EJq69Onj9R/wIABAoBQKpVi+/bt4smTJ+L27dsagWbPnj1CiKJ/SIYOHSqSkpJEenq6uHz5srh27Zr0YahUKsUPP/wg0tPTxZo1a7T+wRFC+x+dDz74QGpfuXKlSE9PFw8fPhSTJ0/WaBdCiGXLlklt27ZtE9nZ2eLOnTvi2LFj4pNPPhEpKSmljq+2P+RCCPHdd99p1Hf69Gnx8OFDjeDi6ekp9S8cUurXry927dolHj9+LC5duiQyMjK0Pnd+fr7G88+dO1ekpaWJY8eOaQSnkoKdtucvPMZCaP4BKrwuIYRo1aqVVPPBgwdFZmamuHnzpujWrZsAngXzc+fOCSGKvr+mTp0qbt++Le7fvy+uX78uTp06Jc3r27evSExMFFlZWeLQoUPCwMBAABAdOnTQWnOjRo3EyZMnxb1794Sfn5/U/u2330r9C/8ulBbmCtuyZYu4dOmSePjwocjJyRF///236Nu3r7SuXbt2SX3LE+wK/wMye/Zs8fDhQ3H69GmNoPHdd98JIYSIioqS2kxMTMSmTZvEw4cPRUpKitiwYYM4efKkEEKIzMxMsXnzZvHXX3+JR48eiezsbHHt2jXRtm1bafmzZ8+W6XUXQvvv2IQJE6R2f39/8ffff4tbt26JXr16Se0TJkzQOiZ+fn4iKSlJXLp0SdjY2Ejtpf2u3b59W0RFRYkbN26IjIwMkZWVJc6ePSv906enpycePHgghCg+2HXv3l3jdbh//744e/ascHV1rfTrU9rnW3HvjZLahSj/Z3Lh97iVlZU4efKkSElJ0XgOe3t7cfbsWXH16lVhYmIiAAhDQ0MppE6aNEnqe/z4cZGdnS1SUlLEr7/+Kj788EORl5dX4mtFFcdgR2VS0WDXrl07qf3Ro0dSu4eHhxBCiKdPn5a4t6tg+uCDD4QQmh985ubm4vHjxxp1rl69Wpr/xhtvaMzz9vYuc7ArvKequGnAgAFCCCF27twptXXv3l0sWLBAfPfdd+LKlStlHt/iPpSHDx8utX/22WdSe05OjrC0tJTmXbt2TQih+Qd2/vz5ZXruS5cuSctYW1trfODOnj272oPd1atXSx1rAGLp0qVCCM33l7u7e5E/EB999FGZ1nf37t0iNRce48J/9EJDQ6X2iga7HTt2iF69egkrKyuhp6dXpJ7FixdLfcsa7AqPnZWVlcjNzZX6r1ixQpo3YsQIIYQQI0aMkNrmzp1bYr3h4eGia9euRfYcFUxbt26V+lYk2BX+Hfvjjz+k9sJ71RwdHbWOSeH+AQEBGgGiJDk5OWLp0qWiY8eOwtzcXOte6oI94NqCXUZGhjQWCoVCCoFCCLFq1apKvz6lfb49Pw5laReifJ/JQmi+x2fNmiW1/9///Z/UHhISIrV37txZai8I12FhYVLbwIEDxeLFi8WOHTvEzZs3S3yNqPJ4VSyVW2BgYKnnExVo0aKF9LOJiYn0c2ZmJgDg/v37ZTqvRds5SB4eHhrrfL6fs7OzxjwXFxecOHGiTHXfvn27zDUNGjQI06dPx6pVq3DkyBEcOXJE6tO+fXvs3r0bDg4OZXrekuoovD1KpRKOjo64f/++1K9JkyYay3p5eZXpOQqPWaNGjVCv3v9OvX1+DKtDWcYa0P4eaNeunUa95Vnf/fv3YWVlpdFW2vu1or7//nsMGTKkxD5Pnz4t93oLb6ujoyP09PSkx4XPZyvol5qaKrW99NJLxa532bJlmDFjRonPXZF6Cyvuva2t7udV9HWaNm0aVq5cWWKfkrbrwYMH0gVAFhYWGrfy0XYlcHlfn8K0fb5VhfKOnbu7u/SzkZGR9LOrq6v0s0qlKrKe999/H6dPn8bWrVuxe/du7N69W+rTs2dP7Ny5E6amppXYEioOL56gaqWvry/9rO1EXktLSyiVz/6/MDMzQ1ZWVpErboUQ2LJlS5FljY2Ni7RZW1tLPyclJWnMS0hIKHPdtra2Us3Jyclaazp27JjUf+nSpfjnn39w6tQpfPfdd5g4cSIA4MyZM5g/f36Zn7e4OgBonBydl5encTFE4X4FtI2PNoXDza1btzRuR1L4OatL4dqbN2+udayFEFi0aFGRZbVtY+H1hYaGal1Xfn4+PDw8iixb2vu1pPaSbN68Wfr5ww8/RHp6OoQQCA4OLve6Ciu8rX///bfGxS6Fr0At6GdnZye1FVwooc2mTZuknz/77DM8efIEQggMHjxYa/+KjElx721tdT+vLK+TNoW364cffpA+b9q3b1+m5Rs0aCCFs7S0NI0LPLR9vpT39SmsrL+/Bco6DuUdu4LP57K2FzAwMMDGjRvx4MEDHDt2DJs3b8Zbb70FADh06FCpAZsqjsGOdMrQ0BB9+/YF8OwKudGjRyMxMRE5OTlISkrChg0b8PLLL2vsBStJr169pD04u3fvxr59+/D48WOsW7cOJ0+eLHNdb7zxBgBACIHAwEBcvHgROTk5SE1Nxffff4++ffvim2++AQAcPnwYixYtwvnz5+Hi4oLXX39d4+bCN2/eLPPzPu+1116Tfl6xYgXi4+ORnp6Ojz/+WNpb17JlyyJ768qjWbNm0h6Tu3fvYsGCBUhPT0dMTIzGVa7Vxd3dHa1atQIAXLp0CTNmzEBKSgpycnJw/fp1fPXVV2jdunWZQ2bhsV+yZAn27NmDjIwMPH78GDExMZgyZUqxAaUsLC0tpZ///PPPMu1xLvxH0NjYGPr6+jh69KjG1aQV4e7uLu2BuXfvHubMmYO0tDTEx8djxYoVUr+C91Hh7f7000+xdetWpKen486dO9iyZQtOnTpVpF5TU1MoFAr8+OOP2Lt3r9Y6Co/J2bNny3SvwsLv7VmzZiE5ORkpKSmYNWuW1j5VofB2mZmZITc3F2vWrEFcXFyZljc2NkbXrl0BPPtsmDlzJh48eIBz587h008/LdK/vK9PZRR+DWrDTb+joqLw2WefISEhAS1atEBAQAB69eolza/M5yKVoqaO+VLdVto5dih0rlVxJ3kLof1cm+vXr5d6TlvBeTvFndBcmLarYgEIBwcH6We1Wl1iTffv3xeenp4l1lRwftU333xTYr8vvvii1PEt7vyY/Px8MXjw4GLXbWxsLH7//Xepf2nnOhVn+/btWs83KnxFXHVePHHy5Elhbm5e6fdXgcLnBmqbCr93iqu5uHpjY2NLrE+brVu3al2mWbNmWp+jPBdP/P7778LY2LjYbR08eLDGVbGjRo0qtm/BVbGLFy8uMq9evXqiSZMmRd7/QmhelFF4KqDtd+zOnTuiadOmxdbStGlT6TzI4sakpNdPm/Hjx2v9HdJ2xXxxnzUnTpzQelVs4c+woKCgCr0+Zfl8K24cCl+s8Pw6yvuZXNx5pIXHunC7ts+DBQsWlPg7uHv37hJfK6o47rEjnXN1dUV8fDxmzpyJli1bwtDQEEZGRnBzc8PAgQOxatWqMh8qAZ6dH7Ro0SI0btwYBgYGaN26Nb7//nuNG+E+f27V8xo2bIgTJ05gwYIFaNeuHUxMTKBSqeDs7IzevXtj2bJl6NevH4Bn57KNHTsWL730Eho2bAg9PT2YmZmhc+fOWLNmDT744IMKjQvw7FDJ9u3bsXr1anTu3BlmZmZQKpVwcnJCYGAg4uLi0KVLlwqvv8Cbb76JqKgotG7dGgYGBnBycsLHH3+MhQsXVnrdZdGxY0ecPXsWEyZMgLu7O1QqFUxNTdG0aVMMGTIEkZGR5TpPcdGiRdizZw/69+8Pa2trKJVKWFtbo3379pg2bRpCQ0MrXKuXlxe++uorNG3aFAYGBmVaZujQoVi9ejWaNWsGlUoFDw8PrF27Vjo0VRldunRBXFwcgoKC4OTkBH19fZiamsLb2xurVq3C9u3bNQ65bdiwAVu2bEHPnj3RsGFDKJVK2NjYoHfv3tL5VDNmzMD8+fPh4uIClUqFNm3aYMeOHdLequcNHjwYc+bMgYuLS6mH6ApYW1vj1KlTCAkJkX7vVSoVWrRogdmzZ+PUqVOl/p6W17JlyzB16lQ4ODjA0NAQPj4+OHDgQLn2eHfq1AkHDx6Ej48PVCoVbG1tMW3aNI3flcJ1l/f1qai5c+di+PDhsLW1rZL1VVbPnj0xcuRING/eHBYWFqhXrx4aNGgAPz8//PDDDxgwYICuS5QthRBC6LoIoqp09epVPHnyBG3atJHadu3ahSFDhiA7OxtOTk5ITEwsctI9EVFZ7N69G7169ZIuJrhx4waGDBkiHco+cOCAxmFHoprEq2JJdn7//Xe88847MDIygpWVFR48eCDdEV2lUmHdunUMdURUYa+99hr09PRgbW2N/Px83L17V/omhXfeeYehjnSKf91Idl566SUMGDAADRs2xO3bt5GTkwN3d3eMGzcO8fHx8Pf313WJRFSHjR07Fs2aNUNGRgb++ecfWFtbo2/fvti2bRvWr1+v6/LoBcdDsUREREQywT12RERERDLBYEdEREQkEwx2RERERDLxwl0Vm5+fj+TkZJiZmdWKe/0QERERlUQIgUePHsHBwaHUuzq8cMEuOTkZTk5Oui6DiIiIqFySkpLg6OhYYp8XLtiZmZkBeDY45ubmOq6GiIiIqGTp6elwcnKSMkxJXrhgV3D41dzcnMGOiIiI6oyynELGiyeIiIiIZILBjoiIiEgmGOyIiIiIZOKFO8eurPLy8pCTk6PrMmTFwMCg1Mu0iYiIqOIY7J4jhEBqaioePnyo61Jkp169enB1dYWBgYGuSyEiIpIlBrvnFIQ6GxsbGBsb8ybGVaTgxtApKSlo3Lgxx5WIiKgaMNgVkpeXJ4U6S0tLXZcjO9bW1khOTkZubi709fV1XQ4REZHs8ISnQgrOqTM2NtZxJfJUcAg2Ly9Px5UQERHJE4OdFjxMWD04rkRERNWLwY6IiIhIJhjsiIiIiGSCwa6MFApFjU4VcefOHbz33nto3LgxVCoV7Ozs0KdPHxw/fhwA4OLigrCwMKm/i4tLked1dHSsiuEiIiIiHeBVsTISEBCAnJwcbNiwAW5ubrh9+zYOHTqEf/75p9hl5s+fj3HjxkmP9fT0aqJUIiIiqgYMdjLx8OFD/Pbbb1Cr1fD19QUAODs7o1OnTiUuZ2ZmBjs7u5ookYiIiKoZD8XKhKmpKUxNTbFz505kZWXpuhwiIiLSAZ0Gu1WrVqF169YwNzeHubk5fHx88NNPPxXbX61Waz0f7dKlSzVYde2kVCoRGRmJDRs2oH79+nj55ZcREhKCs2fPlrjcrFmzpFBoamqKzz//vIYqJiIioqqm00Oxjo6OWLx4Mdzd3QEAGzZswKBBgxAXFwdPT89il7t8+TLMzc2lx9bW1tVea10QEBCAV199FUePHsXx48exf/9+LFmyBOvWrUNQUJDWZT788EONeVZWVjVTLBERyUZpF/0J9amSV+DboQqrebHpNNgNHDhQ4/HChQuxatUqxMTElBjsbGxsUL9+/Wqurm4yNDRE79690bt3b3zyyScYO3Ys5syZU2yws7KykoI1ERER1W215hy7vLw8bN26FRkZGfDx8Smxb7t27WBvb4+ePXsiOjq6xL5ZWVlIT0/XmF4kLVu2REZGhq7LICIiohqg86tiz507Bx8fH2RmZsLU1BQ7duxAy5Yttfa1t7fHmjVr4OXlhaysLHzzzTfo2bMn1Go1unfvrnWZ0NBQzJs3rzo3oVa4f/8+hgwZgtGjR6N169YwMzNDbGwslixZgkGDBum6PCIiIqoBOg92Hh4eiI+Px8OHDxEVFYXAwEAcPnxYa7jz8PCAh4eH9NjHxwdJSUlYunRpscFu9uzZCA4Olh6np6fDycmp6jdEx0xNTeHt7Y0VK1bgr7/+Qk5ODpycnDBu3DiEhIQAAPLz86FU6vwlJyIiomqi87/yBgYG0jleHTp0wKlTp/DZZ5/h66+/LtPynTt3xqZNm4qdr1KpoFKpKl2nEKLS66hOKpUKoaGhCA0N1To/Ly8P9+/f17hnXWJiYg1VR0RERDVB58HueUKIct2HLS4uDvb29tVYUd33999/Y+PGjcjLy0PXrl11XQ4RERFVE50Gu5CQEPTr1w9OTk549OgRtm7dCrVajf379wN4dhj11q1b2LhxIwAgLCwMLi4u8PT0RHZ2NjZt2oSoqChERUXpcjNqvbZt28LS0hLffPMNv2WCiIhIxnQa7G7fvo2RI0ciJSUFFhYWaN26Nfbv34/evXsDAFJSUnDz5k2pf3Z2NmbMmIFbt27ByMgInp6e2Lt3L/r376+rTagT7t27p+sSiIiIqAYoRG0/eayKpaenw8LCAmlpaRo3OQaAzMxMJCQkwNXVFYaGhjqqUL44vkRE8sQbFFevkrLL82rdOXZERERVqdTQ8WLt3yCZqzU3KCYiIiKiymGwIyIiIpIJHoolIiIinSr5YDnAg+Vlx2BHREREL7ZSzsNEHToPk4diiYiIiGSCe+zK6nBszT5fOS/9DgoKwoYNGwAAenp6cHBwwKuvvopFixahQYMGAAAXFxfcuHEDAGBoaAhnZ2eMGTMGM2bMKPWqMSIiIqr9GOxkpG/fvoiIiEBubi4uXLiA0aNH4+HDh/j222+lPvPnz8e4ceOQmZmJgwcP4v3334e5uTnee+89HVZOREREVYHBTkZUKpX0lWGOjo4YOnQoIiMjNfqYmZlJfcaOHYtVq1bhl19+YbAjohdXaUdkePNcqkN4jp1MXb9+Hfv374e+vr7W+UIIqNVqXLx4sdg+REREVLdwj52M7NmzB6ampsjLy0NmZiYAYPny5Rp9Zs2ahX//+9/Izs5GTk4ODA0NMXnyZF2US0RERFWMwU5GevTogVWrVuHJkydYt24drly5gkmTJmn0+fDDDxEUFIS7d+/io48+wiuvvIIuXbroqGIiIiKqSjwUKyMmJiZwd3dH69at8fnnnyMrKwvz5s3T6GNlZQV3d3f4+PggKioKK1aswMGDB3VUMREREVUlBjsZmzNnDpYuXYrk5GSt8xs0aIBJkyZhxowZ/BJsIiKqvRSlTCRhsJMxPz8/eHp6YtGiRcX2mThxIi5fvoyoqKgarIyIiIiqA8+xk7ng4GC88847mDVrltb51tbWGDlyJObOnYvBgwejXj1mfSIikhfFvJJ368npmBWDXVnV8vsYPX+/ugJvv/023n77bQBAYmKi1j5r1qyppqqIiIhqAo/HFuDuGSIiIiKZ4B47IiIiohKU9nXqten6Q+6xIyIiIpIJBjsiIiIimWCwIyIiIpIJBjsiIiIimWCwIyIiIpIJBjsiIiIimWCwIyIiIpIJBjsiIiIimWCwKyNFDU/lFRQUBIVCAYVCAX19fbi5uWHGjBnIyMgAAERFRcHb2xsWFhYwMzODp6cnpk+frrGOp0+fYs6cOfDw8IBKpYKVlRXefPNNnD9/vgIVERERUU3jN0/ISN++fREREYGcnBwcPXoUY8eORUZGBgICAjBs2DAsWrQIr732GhQKBS5cuIBDhw5Jy2ZlZaFXr164efMmli1bBm9vb9y+fRuhoaHw9vbGwYMH0blzZx1uHREREZWGwU5GVCoV7OzsAABvv/02oqOjsXPnTqhUKnTt2hUffvih1LdZs2Z4/fXXpcdhYWE4fvw44uLi0KZNGwCAs7OztKdvzJgx+PPPP6Eo7XtViIiISGd4KFbGjIyMkJOTAzs7O5w/fx5//vlnsX23bNmC3r17S6GuQL169TBt2jRcuHABf/zxR3WXTERERJXAYCdTJ0+exJYtW9CzZ09MmjQJHTt2xEsvvQQXFxcMGzYM69evR1ZWltT/ypUraNGihdZ1FbRfuXKlRmonIiKiimGwk5E9e/bA1NQUhoaG8PHxQffu3fHFF1/AxMQEe/fuxbVr1/Dvf/8bpqammD59Ojp16oQnT56Uul4hBADwMCwREVEtx2AnIz169EB8fDwuX76MzMxM/PDDD7CxsZHmN2nSBGPHjsW6detw5swZXLhwAdu2bQPw7Jy7CxcuaF3vpUuXAABNmzat/o0gIiKiCmOwkxETExO4u7vD2dkZ+vr6JfZ1cXGBsbGxdDuUYcOG4eDBg0XOo8vPz8eKFSvQsmXLIuffERERUe3Cq2JfAHPnzsWTJ0/Qv39/ODs74+HDh/j888+Rk5OD3r17AwCmTZuGH3/8EQMHDtS43cmiRYtw8eJFHDx4kIdiiYiIajnusXsB+Pr64vr16xg1ahSaN2+Ofv36ITU1Fb/88gs8PDwAAIaGhvj1118RGBiIkJAQuLu7o2/fvtDT00NMTAzvYUdERFQHcI9dGQldF1CKyMjIYuf16NEDPXr0KHUdxsbGWLBgARYsWFCFlREREVFN4R47IiIiIplgsCMiIiKSCQY7IiIiIpnQabBbtWoVWrduDXNzc5ibm8PHxwc//fRTicscPnwYXl5eMDQ0hJubG1avXl1D1RIRERHVbjoNdo6Ojli8eDFiY2MRGxuLV155BYMGDcL58+e19k9ISED//v3RrVs3xMXFISQkBJMnT0ZUVFQNV05ERERU++j0qtiBAwdqPF64cCFWrVqFmJgYeHp6Fum/evVqNG7cGGFhYQCefYdpbGwsli5dioCAgJoomYiIiKjWqjXn2OXl5WHr1q3IyMiAj4+P1j7Hjx+Hv7+/RlufPn0QGxuLnJwcrctkZWUhPT1dYyIiIiKSI50Hu3PnzsHU1BQqlQrjx4/Hjh070LJlS619U1NTYWtrq9Fma2uL3Nxc3Lt3T+syoaGhsLCwkCYnJ6cq3wYiIiKi2kDnwc7DwwPx8fGIiYnB+++/j8DAwGK/jB5Aka+1EkJobS8we/ZspKWlSVNSUlLVFU9ERERUi+j8mycMDAzg7u4OAOjQoQNOnTqFzz77DF9//XWRvnZ2dkhNTdVou3PnDpRKJSwtLbWuX6VSQaVSVX3hRERERLWMzvfYPU8IgaysLK3zfHx8cODAAY22X375BR06dIC+vn71Fqao4amcgoKCoFAopMnS0hJ9+/bF2bNn/7cJ/39eTEyMxrJZWVmwtLSEQqGAWq3WmLdnzx74+fnBzMwMxsbG6NixY4lfX0ZEJDdV/HFNVK10GuxCQkJw9OhRJCYm4ty5c/joo4+gVqsxfPhwAM8Oo44aNUrqP378eNy4cQPBwcG4ePEi1q9fj/DwcMyYMUNXm1Cr9O3bFykpKUhJScGhQ4egVCoxYMAAjT5OTk6IiIjQaNuxYwdMTU2LrO+LL77AoEGD0KVLF5w4cQJnz57FsGHDMH78eI45ERFRLaTTYHf79m2MHDkSHh4e6NmzJ06cOIH9+/ejd+/eAICUlBTcvHlT6u/q6op9+/ZBrVajbdu2WLBgAT7//HPe6uT/U6lUsLOzg52dHdq2bYtZs2YhKSkJd+/elfoEBgZi69atePr0qdS2fv16BAYGaqwrKSkJ06dPx9SpU7Fo0SK0bNkS7u7umD59Oj799FMsW7YMJ06cqLFtIyIiotLp9By78PDwEudrO+Tn6+uLM2fOVFNF8vH48WNs3rwZ7u7uGucfenl5wdXVFVFRURgxYgSSkpJw5MgRfPnll1iwYIHU7/vvv0dOTo7WPXPvvfceQkJC8O2338Lb27tGtoeIiIhKV+vOsaOK27NnD0xNTWFqagozMzPs2rUL27ZtQ716mi/zO++8g/Xr1wMAIiIi0L9/f1hbW2v0uXLlCiwsLGBvb1/keQwMDODm5oYrV65U38YQERFRuTHYyUiPHj0QHx+P+Ph4nDhxAv7+/ujXrx9u3Lih0W/EiBE4fvw4rl+/jsjISIwePbrczyWEKPYWM0RERKQbDHYyYmJiAnd3d7i7u6NTp04IDw9HRkYG1q5dq9HP0tISAwYMwJgxY5CZmYl+/foVWVezZs2QlpaG5OTkIvOys7Nx/fp1NG3atNq2hYiIiMqPwU7GFAoF6tWrp3GhRIHRo0dDrVZj1KhR0NPTKzI/ICAASqUSy5YtKzJv9erVyMjIwFtvvVUtdRMREVHF6PwGxVR1srKypBs4P3jwACtXrsTjx48xcODAIn379u2Lu3fvwtzcXOu6GjdujCVLlmDGjBkwNDTEyJEjoa+vjx9//BEhISGYPn06L5wgIiKqZRjsZGT//v3SxQ5mZmZo3rw5tm/fDj8/vyJ9FQoFrKysSlzftGnT0KRJEyxduhSfffYZ8vLy4OnpiVWrVuGdd96pjk0gIiKiSmCwKyuh6wJKFhkZWeo3QhR8r6429evX1zr/tddew2uvvVbZ8oiIiKgGMNgRERFVRmk3CKjsjoHS7kBQwj/t9OLhxRNEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTvN0JERFRHca7oVBhDHZERETVqrpvdEf0PzwUS0RERCQTDHZlpqjhqfzu3LmD9957D40bN4ZKpYKdnR369OmD48ePAwDi4uIwYMAA2NjYwNDQEC4uLhg6dCju3btXZF2LFi2Cnp4eFi9eXKFaiIiIqOYx2MlIQEAA/vjjD2zYsAFXrlzBrl274Ofnh3/++Qd37txBr169YGVlhZ9//hkXL17E+vXrYW9vjydPnhRZV0REBGbOnIn169frYEuIiIioIniOnUw8fPgQv/32G9RqNXx9fQEAzs7O6NSpEwBg586dSE9Px7p166BUPnvZXV1d8corrxRZ1+HDh/H06VPMnz8fGzduxJEjR9C9e/ea2xgiIiKqEO6xkwlTU1OYmppi586dyMrKKjLfzs4Oubm52LFjB0Qpl0iFh4fjrbfegr6+Pt566y2Eh4dXV9lERERUhRjsZEKpVCIyMhIbNmxA/fr18fLLLyMkJARnz54FAHTu3BkhISF4++23YWVlhX79+uHTTz/F7du3NdaTnp6OqKgojBgxAgAwYsQIfP/990hPT6/xbSIiIqLyYbCTkYCAACQnJ2PXrl3o06cP1Go12rdvj8jISADAwoULkZqaitWrV6Nly5ZYvXo1mjdvjnPnzknr2LJlC9zc3NCmTRsAQNu2beHm5oatW7fqYpOIiIioHBSitONyMpOeng4LCwukpaXB3NxcY15mZiYSEhLg6uoKQ0PD55as2JWqFVc1L8vYsWNx4MAB3Lhxo8i87OxstGvXDh06dMCGDRsAAJ06dUJsbCzq1ftf5s/Pz0fHjh1x4sSJStVS8vgSEVUPRSl38BXqUyUv79uh5OVLvU1dJe9jV0r9ilKWr4m/8rV9jBXzSll8bsnzdT3GJWWX5/HiCZlr2bIldu7cqXWegYEBmjRpgoyMDADAuXPnEBsbC7VajYYNG0r9Hj58iO7du+PPP/9Eq1ataqJsIiIiqgAGO5m4f/8+hgwZgtGjR6N169YwMzNDbGwslixZgkGDBmHPnj3YunUrhg0bhmbNmkEIgd27d2Pfvn2IiIgA8OyiiU6dOmm9AtbHxwfh4eFYsWJFTW8aERERlRGDnUyYmprC29sbK1aswF9//YWcnBw4OTlh3LhxCAkJQUpKCoyNjTF9+nQkJSVBpVKhadOmWLduHUaOHIns7Gxs2rQJs2bN0rr+gIAAhIaG4r///S8MDAxqeOuIiIioLHiOXSE8B6x6cXyJSBdq+/lfPMeO59iVhufYERER1RGKeaWEohqqg+SBtzshIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgl+80QZlXZn8Kom5pT/XuN37tzBxx9/jJ9++gm3b99GgwYN0KZNG8ydOxc+Pj4AgGPHjuE///kPjh8/jqdPn6Jp06YICgrC1KlToaenJ60rOjoa8+fPxx9//IHMzEw0atQIXbp0QXh4OJRKzbfNu+++i/DwcGzevBnDhg2r3IYTERFRhXGPnYwEBATgjz/+wIYNG3DlyhXs2rULfn5++OeffwAAO3bsgK+vLxwdHREdHY1Lly5hypQpWLhwIYYNG4aCrw0+f/48+vXrh44dO+LIkSM4d+4cvvjiC+jr6yM/P1/jOZ88eYJt27bhww8/RHh4eI1vMxEREf0P99jJxMOHD/Hbb79BrVbD19cXAODs7IxOnToBADIyMjBu3Di89tprWLNmjbTc2LFjYWtri9deew3fffcdhg4digMHDsDe3h5LliyR+jVp0gR9+/Yt8rzbt29Hy5YtMXv2bNjb2yMxMREuLi7Vu7FERESklU732IWGhqJjx44wMzODjY0NXn/9dVy+fLnEZdRqNRQKRZHp0qVLNVR17WRqagpTU1Ps3LkTWVlZReb/8ssvuH//PmbMmFFk3sCBA9GsWTN8++23AAA7OzukpKTgyJEjpT5veHg4RowYAQsLC/Tv3x8RERGV3xgiIiKqEJ0Gu8OHD2PixImIiYnBgQMHkJubC39/f2RkZJS67OXLl5GSkiJNTZs2rYGKay+lUonIyEhs2LAB9evXx8svv4yQkBCcPXsWAHDlyhUAQIsWLbQu37x5c6nPkCFD8NZbb8HX1xf29vZ44403sHLlSqSnp2ssc/XqVcTExGDo0KEAgBEjRiAiIqLI4VoiIiKqGToNdvv370dQUBA8PT3Rpk0bRERE4ObNmzh9+nSpy9rY2MDOzk6aCp/4/6IKCAhAcnIydu3ahT59+kCtVqN9+/aIjIyU+hScR/c8IQQMDAwAAHp6eoiIiMDff/+NJUuWwMHBAQsXLoSnpydSUlKkZcLDw9GnTx9YWVkBAPr374+MjAwcPHiw+jaSiIiIilWrLp5IS0sDADRs2LDUvu3atYO9vT169uyJ6OjoYvtlZWUhPT1dY5IzQ0ND9O7dG5988gmOHTuGoKAgzJkzR9qjefHiRa3LXbp0Cc2aNdNoa9SoEUaOHIkvv/wSFy5cQGZmJlavXg0AyMvLw8aNG7F3714olUoolUoYGxvjn3/+4UUUREREOlJrLp4QQiA4OBhdu3ZFq1atiu1nb2+PNWvWwMvLC1lZWfjmm2/Qs2dPqNVqdO/evUj/0NBQzJs3rzpLr9VatmyJnTt3ok+fPmjYsCGWLVuGLl26aPTZtWsXrl69irCwsGLX06BBA9jb20uHyfft24dHjx4hLi5OY2/ppUuXMHz4cNy/fx+WlpbVsk1EL5TDsSXP9+1QM3UQUZ1Qa4LdBx98gLNnz+K3334rsZ+Hhwc8PDykxz4+PkhKSsLSpUu1BrvZs2cjODhYepyeng4nJ6eqK7yWuH//PoYMGYLRo0ejdevWMDMzQ2xsLJYsWYJBgwbBxMQEX3/9NYYNG4Z3330XH3zwAczNzXHo0CF8+OGHGDt2LPr37w8A+PrrrxEfH4833ngDTZo0QWZmJjZu3Ijz58/jiy++APDsMOyrr76KNm3aaNTh6emJqVOnYtOmTZgyZUqNjwNRXaNQlHyPTKE+VUOVEJEc1IpgN2nSJOzatQtHjhyBo6NjuZfv3LkzNm3apHWeSqWCSqWqbIm1nqmpKby9vbFixQr89ddfyMnJgZOTE8aNG4eQkBAAwJtvvono6GgsXLgQ3bp1kw5LL168GLNmzZLW1alTJ/z2228YP348kpOTYWpqCk9PT+zcuRO+vr64ffs29u7diy1bthSpQ6FQYPDgwQgPD2ewIyIiqmEKUdzZ9DVACIFJkyZhx44dUKvVFb6y9c0338Q///yDX3/9tdS+6enpsLCwQFpaGszNzTXmZWZmIiEhAa6urjA0NKxQLXVJZmYmBg0ahKSkJBw+fBjW1tbV/nwv0vgSlUWl99jxUGypKjvGilLGWJT2xUSldFCUcraQmFvyfAVK/jNeE3/lOcYlL19ZJWWX5+l0j93EiROxZcsW/PjjjzAzM0NqaioAwMLCAkZGRgCeHUq9desWNm7cCAAICwuDi4sLPD09kZ2djU2bNiEqKgpRUVE62466ytDQED/++CPCwsJw5MgRBAQE6LokIiIiqgSdBrtVq1YBAPz8/DTaIyIiEBQUBABISUnBzZs3pXnZ2dmYMWMGbt26BSMjI3h6emLv3r3S+WFUPoaGhvjXv/6l6zKIiIioCug02JXlKHDhe7ABwMyZMzFz5sxqqoiIiIio7qpV97EjIiIioopjsCMiIiKSCQY7IiIiIplgsCMiIiKSCQY7IiIiIplgsCMiIiKSiVrxlWJEVDuVejd53X1xDRERacE9dmWlUNTsVE5BQUFQKBTSZGlpib59++Ls2bNF+r777rvQ09PD1q1bC22eosSp4IbRRBoOx5Y8ERFRjWKwk5G+ffsiJSUFKSkpOHToEJRKJQYMGKDR58mTJ9i2bRs+/PBDhIeHS+0Fy6WkpCAsLAzm5uYabZ999llNbw4RERGVEw/FyohKpYKdnR0AwM7ODrNmzUL37t1x9+5dWFtbAwC2b9+Oli1bYvbs2bC3t0diYiJcXFyk5YBn39WrUCg02oiIiKj24x47mXr8+DE2b94Md3d3WFpaSu3h4eEYMWIELCws0L9/f0REROiwSiIiIqpKDHYysmfPHpiamsLU1BRmZmbYtWsXtm3bhnr1nr3MV69eRUxMDIYOHQoAGDFiBCIiIpCfn6/LsomIiKiKMNjJSI8ePRAfH4/4+HicOHEC/v7+6NevH27cuAHg2d66Pn36wMrKCgDQv39/ZGRk4ODBg7osm4iIiKoIz7GTERMTE7i7u0uPvby8YGFhgbVr12LevHnYuHEjUlNToVT+72XPy8tDeHg4/P39dVEyERERVSEGOxlTKBSoV68enj59in379uHRo0eIi4uDnp6e1OfSpUsYPnw47t+/r3EuHhEREdU9DHYykpWVhdTUVADAgwcPsHLlSjx+/BgDBw5EWFgYXn31VbRp00ZjGU9PT0ydOhWbNm3ClClTdFE2ERERVRGeYycj+/fvh729Pezt7eHt7Y1Tp05h+/btaNGiBfbu3YuAgIAiyygUCgwePFjjnnZERERUN3GPXVnV8q9OioyMRGRkZLHzc3Jyip33+eefazwOCgriN00QERHVQdxjR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHYyERQUBIVCUWRauXIlzMzMkJubK/V9/Pgx9PX10a1bN411HD16FAqFAleuXJHajh07Bj09PfTt27fGtoWIiIgqhsGujBSKmp0qom/fvkhJSdGYevfujcePHyM2Nlbqd/ToUdjZ2eHUqVN48uSJ1K5Wq+Hg4IBmzZpJbevXr8ekSZPw22+/4ebNmxUePyIiIqp+DHYyolKpYGdnpzF5eHjAwcEBarVa6qdWqzFo0CA0adIEx44d02jv0aOH9DgjIwPfffcd3n//fQwYMKDE76IlIiIi3WOwewH4+fkhOjpaehwdHQ0/Pz/4+vpK7dnZ2Th+/LhGsNu2bRs8PDzg4eGBESNGICIiAkKIGq+fiIiIyobBTkb27NkDU1NTaRoyZAiAZ8Hu999/R25uLh49eoS4uDh0794dvr6+0p68mJgYPH36VCPYhYeHY8SIEQCeHeZ9/PgxDh06VOPbRURERGWj1HUBVHV69OiBVatWSY9NTEyk9oyMDJw6dQoPHjxAs2bNYGNjA19fX4wcORIZGRlQq9Vo3Lgx3NzcAACXL1/GyZMn8cMPPwAAlEolhg4divXr16NXr141v3FERERUKgY7GTExMYG7u3uRdnd3dzg6OiI6OhoPHjyAr68vAMDOzg6urq74/fffER0djVdeeUVaJjw8HLm5uWjUqJHUJoSAvr4+Hjx4gAYNGlT/BhEREVG58FDsC6JHjx5Qq9VQq9Xw8/OT2n19ffHzzz8jJiZGOgybm5uLjRs3YtmyZYiPj5emP/74A87Ozti8ebOOtoKIiIhKwj12L4gePXpg4sSJyMnJkfbYAc+C3fvvv4/MzEwp2O3ZswcPHjzAmDFjYGFhobGeN998E+Hh4fjggw9qtH4iIiIqXYX22J08ebKq66Bq1qNHDzx9+hTu7u6wtbWV2n19ffHo0SM0adIETk5OAJ4dhu3Vq1eRUAcAAQEBiI+Px5kzZ2qsdiIiIiqbCu2x69y5M5o3b45Ro0ZhxIgRcHR0rOq6ap3afpeP0u4x5+LiovVWJY6OjkXad+/eXex62rdvz1ueEBER1VIVPsfu0qVL+Oijj+Di4gJ/f39s2rRJ41sMiIio+ilKmYjoxVKhYPfHH39gzpw58PT0RH5+Pg4ePIjAwEDY2dnhnXfe0fiWAyIiIiKqGRUKdi+99BLmzJmDs2fP4vLly5g/fz6MjY3x+PFjbNy4ET179oS3tzeuX79e1fUSERERUTEqdbuTK1euIDw8HKtWrdI4DGtubo5Tp04hKCioxOVDQ0PRsWNHmJmZwcbGBq+//jouX75c6vMePnwYXl5eMDQ0hJubG1avXl2ZzSAiIiKShQoFu/Xr16Nr165o0aIFPv30U6SkpKBhw4aYPn06rl69itu3b6Nt27alXj17+PBhTJw4ETExMThw4AByc3Ph7++PjIyMYpdJSEhA//790a1bN8TFxSEkJASTJ09GVFRURTaFiIiISDYqdFXs2LFjpZ+9vb0xYcIE/N///R9UKpXU3rJlS8THx5e4nv3792s8joiIgI2NDU6fPo3u3btrXWb16tVo3LgxwsLCAAAtWrRAbGwsli5dioCAgIpsThG86rN6cFyJiIiqV4X22BkbG2PcuHE4c+YMjh8/jpEjR2qEOgDYtGkT8vPzy7XetLQ0AEDDhg2L7XP8+HH4+/trtPXp0wexsbHIyckp1/M9T19fHwB4dW81yc7OBgDo6enpuBIiIiJ5qtAeu+TkZJibm1dpIUIIBAcHo2vXrmjVqlWx/VJTUzVusAsAtra2yM3Nxb1792Bvb68xLysrC1lZWdLj9PT0Ytetp6eH+vXr486dOwCeBViFgjcMqAr5+fm4e/cujI2NoVTyC0+IiIiqQ4X+whYcBtXGyMgIbdu2Re/evcu1zg8++ABnz57Fb7/9Vmrf58NWwSE+bSEsNDQU8+bNK3MddnZ2ACCFO6o69erVQ+PGjRmWiYiIqkmFgt3cuXNL/ePs6+uLffv2wdDQsNT1TZo0Cbt27cKRI0dK/RYLOzs7pKamarTduXMHSqUSlpaWRfrPnj0bwcHB0uP09HTpq7O0USgUsLe3h42NTaUP7ZImAwMD1KtXqQuxiYiIqASVOiZW0snwhw8fxn//+1/MmTOnxOUnTZqEHTt2QK1Ww9XVtdTn9PHxKfKVV7/88gs6dOggnSNXmEqlKnL+X1no6enxXDAiIiKqUyq0++TIkSMwMzPDunXrkJ6ejvT0dKxduxbm5ubYu3cvvvnmGwDAd999V+J6Jk6ciE2bNmHLli0wMzNDamoqUlNT8fTpU6nP7NmzMWrUKOnx+PHjcePGDQQHB+PixYtYv349wsPDMWPGjIpsChEREZFsVCjYffDBB3B0dMTo0aNhamoKU1NTjBkzBo6Ojpg9ezaGDx+OLl26ICEhocT1rFq1CmlpafDz84O9vb00bdu2TeqTkpKCmzdvSo9dXV2xb98+qNVqtG3bFgsWLMDnn39eZbc6ISKiclAoSp6IqEZV6FDs5cuXIYTA/v370bdvXwDAwYMHce3aNencu4YNG5Z6PlVZ7msWGRlZpM3X1xdnzpwpf+FEREREMlahYNe2bVucOHECr776qnRLkIJvi/D29gYA/Pnnn3B2dq66SomIiIioRBU6FPv111/DwcEBQghkZGTg8ePHEELAwcEBa9aswV9//YXWrVvj3Xffrep6iYiIiKgYFdpj17p1a1y7dg1btmzB+fPnAQCtWrXC22+/LV2BumPHjqqrkoiIiIhKVe5gl5OTg/feew+Ghob48ssvebNZIqLarLSPaH6FM5GslDvY6evr47vvvkPTpk0Z6oiIiIhqkQqdY+fv74+EhASkpaVVdT1EREREVEEVOsfOx8cH+/btQ+fOnREUFAQ7OzuNvXeFbyhMRC8uHgUkIqpZFQp2s2bNgkKhwJUrVxASEqIxT6FQMNgRERER6UCFvyu2uJsLl+Wmw0RERERU9SoU7PLz86u6DiIikqHSrrHjvgCiqlXhPXYFUlJSkJubCycnp6qoh6hcSrsym3uQiYjoRVKhq2IBYNOmTXB2doajoyOGDh2KXbt24ZVXXsG+ffuqsj4iIiIiKqMK7bGLiooqcoGEl5cXDh8+DBsbG/Tv379KiiMiIiKisqvQHrtFixZBoVBg6tSpUlujRo3g4OCAU6dOVVVtRERERFQOFQp2Fy5cgIeHB5YvX67Rbm1tjeTk5CopjIiIiIjKp0KHYg0NDZGenq5xdWxWVhYSEhJgbGxcZcURVdrh2JLn+3aomTqIiIhqQIX22Pn4+CAlJUU6l+7vv/9Gr169kJ6eDh8fnyotkIiIiIjKpkLBbs6cOVAqlThw4AAUCgVu3bqF33//HUqlEh9//HFV10hEREREZVChYOft7Y1Dhw6he/fuMDIygpGREXx9fXHw4EF4e3tXdY1EREREVAYVvkFx165dER0dXZW1EBEREVElVDjY5efn49q1a7h9+3aRu/t379690oURERERUflUKNidOHECb731Fm7cuFFknkKhQG5ubqULIyIiIqLyqVCwmzBhAhITE6u4FCIiIiKqjAoFu4sXL0JfXx9Lly5Fy5YtoVRW+IguEREREVWRCiWy5s2bIzMzE5MmTarqeoiIqEYpSpkvSplPRLVJhW53snz5ciQmJuKrr75Cenp6VddERERERBVQoWDXs2dPZGVlYdKkSWjQoAH09PSkiYdliajMFKVMRERULhVKYc/f3oSIiIiIdK9CwS4iIqKq6yAiIiKiSipXsNu1axcaNmyIwMBAAEB6ejqUSiWMjY0BANu3b0dKSkrVV0lEREREpSrXOXavv/46Zs2aJT1u0KABevfuLT1evnw5pk2bVnXV1XEKhaLEiYiIiKgqlfviicLn1wkheL4dERERUS3BS1h16XBsyfN9O9RMHURERCQLFbrdCRERERHVPuXeYxcXFwc3Nzetj5OTk6uuMiIiIiIql3IHu+zsbCQmJkqPs7KyNB7zogAiIiIi3ShXsOvevTuDGxHVoOr9HtPSPs54bRigmFfyIHGIiGqXcgU7tVpdTWUQERERUWXx4gkiIiIimWCwIyIiIpIJBjsiIiIimdBpsDty5AgGDhwIBwcHKBQK7Ny5s8T+arVa61dzXbp0qWYKJqK6RaEoeSIikhmdfvNERkYG2rRpg3feeQcBAQFlXu7y5cswNzeXHltbW1dHeURERER1ik6DXb9+/dCvX79yL2djY4P69etXfUFEREREdVidPMeuXbt2sLe3R8+ePREdHa3rcoiIiIhqBZ3usSsve3t7rFmzBl5eXsjKysI333yDnj17Qq1Wo3v37lqXycrKQlZWlvQ4PT29psolomrGm+cSEWmqU8HOw8MDHh4e0mMfHx8kJSVh6dKlxQa70NBQzJs3r6ZKJCIiItKZOnkotrDOnTvj6tWrxc6fPXs20tLSpCkpKakGqyMiIiKqOXVqj502cXFxsLe3L3a+SqWCSqWqwYqIiIiIdEOnwe7x48e4du2a9DghIQHx8fFo2LAhGjdujNmzZ+PWrVvYuHEjACAsLAwuLi7w9PREdnY2Nm3ahKioKERFRelqE4iIiIhqDZ0Gu9jYWPTo0UN6HBwcDAAIDAxEZGQkUlJScPPmTWl+dnY2ZsyYgVu3bsHIyAienp7Yu3cv+vfvX+O1ExEREdU2Og12fn5+EKL469YiIyM1Hs+cORMzZ86s5qqIiIiI6qY6f44dUWWU9qVSvF0GERHVJXX+qlgiIiIieobBjoiIiEgmGOyIiIiIZILn2BHpkqKUs/xKuLiIiIjoedxjR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsEbFBPVYiXdv5j3LiYioudxjx0RERGRTHCPHVFJSvnGL3CvGRER1SIMdrUYMwURERGVBw/FEhEREckEgx0RERGRTPBQLFGl8IA5ERHVHtxjR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMsFgR0RERCQTDHZEREREMqHUdQFUCYpS5osaqYKIiIhqCQY7omqkmFdy+mb2JiKiqsRDsUREREQywWBHREREJBM8FEvFU5RyEp/ggUQiIqLaRKd77I4cOYKBAwfCwcEBCoUCO3fuLHWZw4cPw8vLC4aGhnBzc8Pq1aurv1AiIiKiOkCnwS4jIwNt2rTBypUry9Q/ISEB/fv3R7du3RAXF4eQkBBMnjwZUVFR1VwpERERUe2n00Ox/fr1Q79+/crcf/Xq1WjcuDHCwsIAAC1atEBsbCyWLl2KgICAaqqSiIiIqG6oUxdPHD9+HP7+/hptffr0QWxsLHJycnRUFREREVHtUKcunkhNTYWtra1Gm62tLXJzc3Hv3j3Y29sXWSYrKwtZWVnS4/T09Gqvs/ao3jsY89oKIiKi2qVO7bEDAMVzaUL8//TwfHuB0NBQWFhYSJOTk1O110hERESkC3Uq2NnZ2SE1NVWj7c6dO1AqlbC0tNS6zOzZs5GWliZNSUlJNVEqERERUY2rU4difXx8sHv3bo22X375BR06dIC+vr7WZVQqFVQqVU2UR0RERKRTOt1j9/jxY8THxyM+Ph7As9uZxMfH4+bNmwCe7W0bNWqU1H/8+PG4ceMGgoODcfHiRaxfvx7h4eGYMWOGLsonIiIiqlV0uscuNjYWPXr0kB4HBwcDAAIDAxEZGYmUlBQp5AGAq6sr9u3bh2nTpuHLL7+Eg4MDPv/8c97qpIL4BfVERETyotNg5+fnJ138oE1kZGSRNl9fX5w5c6YaqyIiIiKqm+rUxRNEREREVDwGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgkGOyIiIiKZYLAjIiIikgmdB7uvvvoKrq6uMDQ0hJeXF44ePVpsX7VaDYVCUWS6dOlSDVZMREREVDvpNNht27YNU6dOxUcffYS4uDh069YN/fr1w82bN0tc7vLly0hJSZGmpk2b1lDFRERERLWXToPd8uXLMWbMGIwdOxYtWrRAWFgYnJycsGrVqhKXs7GxgZ2dnTTp6enVUMVEREREtZfOgl12djZOnz4Nf39/jXZ/f38cO3asxGXbtWsHe3t79OzZE9HR0dVZJhEREVGdodTVE9+7dw95eXmwtbXVaLe1tUVqaqrWZezt7bFmzRp4eXkhKysL33zzDXr27Am1Wo3u3btrXSYrKwtZWVnS4/T09KrbCCIiIqJaRGfBroBCodB4LIQo0lbAw8MDHh4e0mMfHx8kJSVh6dKlxQa70NBQzJs3r+oKJiIiIqqldHYo1srKCnp6ekX2zt25c6fIXrySdO7cGVevXi12/uzZs5GWliZNSUlJFa6ZiIiIqDbTWbAzMDCAl5cXDhw4oNF+4MABdOnSpczriYuLg729fbHzVSoVzM3NNSYiIiIiOdLpodjg4GCMHDkSHTp0gI+PD9asWYObN29i/PjxAJ7tbbt16xY2btwIAAgLC4OLiws8PT2RnZ2NTZs2ISoqClFRUbrcDCIiIqJaQafBbujQobh//z7mz5+PlJQUtGrVCvv27YOzszMAICUlReOedtnZ2ZgxYwZu3boFIyMjeHp6Yu/evejfv7+uNoGIiIio1tD5xRMTJkzAhAkTtM6LjIzUeDxz5kzMnDmzBqoiIiIiqnt0/pViRERERFQ1GOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmGOyIiIiIZILBjoiIiEgmdB7svvrqK7i6usLQ0BBeXl44evRoif0PHz4MLy8vGBoaws3NDatXr66hSomIiIhqN50Gu23btmHq1Kn46KOPEBcXh27duqFfv364efOm1v4JCQno378/unXrhri4OISEhGDy5MmIioqq4cqJiIiIah+dBrvly5djzJgxGDt2LFq0aIGwsDA4OTlh1apVWvuvXr0ajRs3RlhYGFq0aIGxY8di9OjRWLp0aQ1XTkRERFT76CzYZWdn4/Tp0/D399do9/f3x7Fjx7Quc/z48SL9+/Tpg9jYWOTk5FRbrURERER1gVJXT3zv3j3k5eXB1tZWo93W1hapqalal0lNTdXaPzc3F/fu3YO9vX2RZbKyspCVlSU9TktLAwCkp6dXdhMqLT3jcSkdSq6x1C0orUNm5RYvrUctGGJZjzHHF3wPAxzjKsAxrn4c48opyCxCiFL76izYFVAoFBqPhRBF2krrr629QGhoKObNm1ek3cnJqbylVjmLV3tUbvlKd6js4iX3sKjk81cFOY8xx7cK1s/3MMcYHOOawDGuGo8ePYJFKU+ms2BnZWUFPT29Invn7ty5U2SvXAE7Ozut/ZVKJSwtLbUuM3v2bAQHB0uP8/Pz8c8//8DS0rLEAFnXpaenw8nJCUlJSTA3N9d1ObLEMa5eHN/qxzGufhzj6vcijLEQAo8ePYKDg0OpfXUW7AwMDODl5YUDBw7gjTfekNoPHDiAQYMGaV3Gx8cHu3fv1mj75Zdf0KFDB+jr62tdRqVSQaVSabTVr1+/csXXIebm5rJ9o9cWHOPqxfGtfhzj6scxrn5yH+PS9tQV0OlVscHBwVi3bh3Wr1+PixcvYtq0abh58ybGjx8P4NnetlGjRkn9x48fjxs3biA4OBgXL17E+vXrER4ejhkzZuhqE4iIiIhqDZ2eYzd06FDcv38f8+fPR0pKClq1aoV9+/bB2dkZAJCSkqJxTztXV1fs27cP06ZNw5dffgkHBwd8/vnnCAgI0NUmEBEREdUaOr94YsKECZgwYYLWeZGRkUXafH19cebMmWququ5TqVSYM2dOkcPQVHU4xtWL41v9OMbVj2Nc/TjGmhSiLNfOEhEREVGtp/PviiUiIiKiqsFgR0RERCQTDHZEREREMsFgJyOhoaFQKBSYOnWq1CaEwNy5c+Hg4AAjIyP4+fnh/Pnzuiuyjpk7dy4UCoXGZGdnJ83n+FberVu3MGLECFhaWsLY2Bht27bF6dOnpfkc48pxcXEp8h5WKBSYOHEiAI5vRRw5cgQDBw6Eg4MDFAoFdu7cqTG/LGOalZWFSZMmwcrKCiYmJnjttdfw999/1+BW1G6ljXFQUFCR93Tnzp01+ryoY8xgJxOnTp3CmjVr0Lp1a432JUuWYPny5Vi5ciVOnToFOzs79O7dG48ePdJRpXWPp6cnUlJSpOncuXPSPI5v5Tx48AAvv/wy9PX18dNPP+HChQtYtmyZxk3EOcaVc+rUKY3374EDBwAAQ4YMAcDxrYiMjAy0adMGK1eu1Dq/LGM6depU7NixA1u3bsVvv/2Gx48fY8CAAcjLy6upzajVShtjAOjbt6/Ge3vfvn0a81/YMRZU5z169Eg0bdpUHDhwQPj6+oopU6YIIYTIz88XdnZ2YvHixVLfzMxMYWFhIVavXq2jauuWOXPmiDZt2midx/GtvFmzZomuXbsWO59jXPWmTJkimjRpIvLz8zm+VQCA2LFjh/S4LGP68OFDoa+vL7Zu3Sr1uXXrlqhXr57Yv39/jdVeVzw/xkIIERgYKAYNGlTsMi/yGHOPnQxMnDgRr776Knr16qXRnpCQgNTUVPj7+0ttKpUKvr6+OHbsWE2XWWddvXoVDg4OcHV1xbBhw3D9+nUAHN+qsGvXLnTo0AFDhgyBjY0N2rVrh7Vr10rzOcZVKzs7G5s2bcLo0aOhUCg4vtWgLGN6+vRp5OTkaPRxcHBAq1atOO7loFarYWNjg2bNmmHcuHG4c+eONO9FHmMGuzpu69atOHPmDEJDQ4vMS01NBQDY2tpqtNva2krzqGTe3t7YuHEjfv75Z6xduxapqano0qUL7t+/z/GtAtevX8eqVavQtGlT/Pzzzxg/fjwmT56MjRs3AuB7uKrt3LkTDx8+RFBQEACOb3Uoy5impqbCwMAADRo0KLYPlaxfv37YvHkzfv31VyxbtgynTp3CK6+8gqysLAAv9hjr/JsnqOKSkpIwZcoU/PLLLzA0NCy2n0Kh0HgshCjSRtr169dP+vmll16Cj48PmjRpgg0bNkgn6nJ8Ky4/Px8dOnTAokWLAADt2rXD+fPnsWrVKo3vieYYV43w8HD069cPDg4OGu0c36pXkTHluJfd0KFDpZ9btWqFDh06wNnZGXv37sXgwYOLXe5FGGPusavDTp8+jTt37sDLywtKpRJKpRKHDx/G559/DqVSKf3H+Px/J3fu3Cny3ySVjYmJCV566SVcvXpVujqW41tx9vb2aNmypUZbixYtpO+I5hhXnRs3buDgwYMYO3as1MbxrXplGVM7OztkZ2fjwYMHxfah8rG3t4ezszOuXr0K4MUeYwa7Oqxnz544d+4c4uPjpalDhw4YPnw44uPj4ebmBjs7O+kqOODZOTaHDx9Gly5ddFh53ZWVlYWLFy/C3t4erq6uHN9Kevnll3H58mWNtitXrsDZ2RkAOMZVKCIiAjY2Nnj11VelNo5v1SvLmHp5eUFfX1+jT0pKCv7880+OewXdv38fSUlJsLe3B/CCj7EOL9ygalD4qlghhFi8eLGwsLAQP/zwgzh37px46623hL29vUhPT9ddkXXI9OnThVqtFtevXxcxMTFiwIABwszMTCQmJgohOL6VdfLkSaFUKsXChQvF1atXxebNm4WxsbHYtGmT1IdjXHl5eXmicePGYtasWUXmcXzL79GjRyIuLk7ExcUJAGL58uUiLi5O3LhxQwhRtjEdP368cHR0FAcPHhRnzpwRr7zyimjTpo3Izc3V1WbVKiWN8aNHj8T06dPFsWPHREJCgoiOjhY+Pj6iUaNGHGMhBIOdzDwf7PLz88WcOXOEnZ2dUKlUonv37uLcuXO6K7COGTp0qLC3txf6+vrCwcFBDB48WJw/f16az/GtvN27d4tWrVoJlUolmjdvLtasWaMxn2NceT///LMAIC5fvlxkHse3/KKjowWAIlNgYKAQomxj+vTpU/HBBx+Ihg0bCiMjIzFgwABx8+ZNHWxN7VTSGD958kT4+/sLa2troa+vLxo3biwCAwOLjN+LOsYKIYTQya5CIiIiIqpSPMeOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiIiISCYY7IiIiIhkgsGOiGRLoVBAoVAgMjJS16UU69q1a+jVqxfMzc2hUCjg5+en03r8/PygUCgQFBSk0zqIqGIY7IioyhSEAoVCgYULF0rtly5dqhMhSxemT5+OQ4cOIScnBx07dkTLli2L9ImMjJTGr6SJiEip6wKISJ4+/fRTvP/++2jYsKGuS6k22dnZMDAwqNQ6zp8/DwCYOHEili5dqrWPtbU1vL29pccnTpwAAFhZWaFJkyaVen4ikhfusSOiapGWlob//ve/xc5Xq9XSnqbExESp/fk9e4X3Vm3fvh3t2rWDkZER+vXrh7t372Lt2rVwcnKCpaUlJkyYgJycHK21jBw5EmZmZrCxscEnn3yCwl+TnZaWhilTpsDZ2RkGBgZwdHREcHAwnjx5IvUJCgqSDpUuWbIEjo6OMDQ0LHb78vLysHTpUrRs2RIqlQoWFhbw9/fHb7/9BgBITEyEQqHAX3/9BQBYtmxZsYdAX331VcTExEiTtvYvv/wSPXv2hL29PVQqFUxMTNCxY0ds2rRJY10bN25E27ZtYWZmBhMTEzRr1gwjRowodjuuXr0KOzs7KBQKDBw4ENnZ2bh8+TJee+012NjYwMDAAHZ2dujTpw9OnjxZ7HqIqIYIIqIq4uvrKwAId3d3YWZmJoyMjMStW7fExYsXBQABQERERAghhIiOjpbaEhISpHU83y8iIkJqMzIyEs2bNxcKhUIAEC1atBD6+vqiWbNmUp/Vq1cXWZeJiYlwcHAQjRo1kto+++wzIYQQmZmZom3btgKAMDQ0FK1btxaGhoYCgHjllVdEfn6+EEKIwMBAAUAYGBiIevXqiRYtWghra+tix2LMmDHSc7m7u4uGDRsKAEKpVAq1Wi2Sk5OFt7e3MDAwEABEo0aNhLe3t5g/f36p41yw3sDAQKlt+/btol69esLZ2Vm0a9dONGjQQOq3Z88eIYQQ8fHx0ti5u7uLVq1aCVNTU1H4T0HBaxgYGCgSExOFk5OTACAGDhwosrKyhBBCtGvXTgAQDRo0EO3atRP29vYarxkR6Q732BFRlbO0tERwcDCePn2K+fPnV9l6P/roI1y8eBFvv/02AODixYuIiIjA5cuX0bVrVwBAdHR0keXat2+PxMREJCQkoFu3bgCARYsWAQC2bt2K+Ph4GBgY4OzZs/jjjz+kvWK//vorfv31V411ZWdn48cff8SFCxeQkpKitc7r169j/fr1AIApU6bg6tWruH79OpydnZGbm4tPPvkE9vb2iImJgb29PQBg7NixiImJwccff1yhsXn55ZeRnJyMxMREnDlzBsnJyXB3d5e2EXh2oYYQAm5ubrh8+TLOnTuHhw8f4vDhw0XWl5qail69eiEpKQmDBg3C999/Lx12vnr1KgDghx9+kJ7r+vXrOr/wg4h4KJaIqsn06dNhZWWF8PBwXLt2rUrWOXDgQACAi4tLkTY3NzcAwO3bt4ss9+abb0JfXx/6+vp48803pX53796VDh9mZ2ejWbNmUCgUaNu2rbRs4UOfANCsWTMMGDAAAKCnp6e1ztjYWOlQb0EItbCwQP/+/aX5Va1evXqYPn06HBwcoFQqYWRkJI17cnIygGfhr0GDBrh+/ToaNmwIb29vTJgwQev6fv75Z1y7dg2dOnXC9u3bNc4lLBjz3r17o3nz5ggICMD+/fulkEpEusNgR0TVwszMDLNnz0Zubi7mzJlTZH7hqzjz8vIAPDvXrSTm5uYAAKVSWaStYH2i0Llz2p7reQX9DQwM4O3tXWRq0KCBRn87O7sSayzPc1elESNGYPPmzUhNTYWHhwe8vb1hZmYG4H/ja2dnh/Pnz+O///0v/P398ejRI6xZswY9evSQLsgoYGpqCgA4ffo09u3bpzFv48aN+PbbbzFmzBhYW1tj3759mDBhAoKDg2tgS4moJAx2RFRtJk6cCCcnJ5w5c6bIPBsbG+nnK1euAAC2b99eLXVs374dOTk5yM3NxQ8//AAAsLW1hbW1NTp16gTgWfj56quvpIsR1Go1PvzwQ2mPW4GyBDUvLy+p3+bNmwE8C60FAalDhw5Vtm0FCvYsjhs3DufPn8e+ffukcFYgOTkZd+/excyZM/Hdd9/hwoULaNKkCfLz86WLOgoMHjwYI0eORF5eHoYNGwa1Wi3NO3r0KN544w2sXr0aR48eRUhICADgyJEjVb5dRFQ+DHZEVG1UKpXWvXUA0LRpUzRu3BgAMHz4cPTo0QMTJ06sljrOnDkDFxcXuLi4SOeT/etf/wIAvPXWW2jdujXy8vLQsWNHtGrVCh4eHqhfvz7efPNNPHz4sNzP16RJE4wePRoA8Nlnn6Fp06Zwc3PDjRs3oFQqMW/evCrbtgKtW7cGAKxbtw6enp5o0qQJMjMzNfpcuHABbdq0gY2NDdq2bQs3NzfpqtyXXnpJo69CoUB4eDj8/f2RmZmJQYMGSQF95MiRaNCgATw8PNCuXTssWLBAowYi0h0GOyKqVkFBQfDw8CjSrlQqsW3bNrRr1w5Pnz7FP//8gx07dlRLDQsXLsQrr7yCtLQ0WFpa4qOPPsLkyZMBPAufhw8fxuTJk+Hk5IQrV67gwYMH6NChAxYuXAhbW9sKPefXX3+NJUuWoEWLFrh58yZycnLQq1cvREdHV8tFBpGRkejRowcMDQ3x5MkThIWFFQlabm5uGDZsGMzNzXHlyhXcvXsXbdq0wZo1a+Dv719knfr6+oiKikL79u2Rnp6Ovn374vLlyxg9ejQ8PT1x7949XLhwAXZ2dnj33XexcuXKKt8uIiofhdB2QgoRERER1TncY0dEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLBYEdEREQkEwx2RERERDLx/wAhne2Dl2QNHwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(r1, energy_task_df['SJF'], color='black', width=bar_width, label='SJF')\n",
    "plt.bar(r2, energy_task_df['RR'], color='pink', width=bar_width, label='RR')\n",
    "plt.bar(r3, energy_task_df['PSO'], color='cyan', width=bar_width, label='PSO')\n",
    "plt.bar(r4, energy_task_df['BMO'], color='magenta', width=bar_width, label='BMO')\n",
    "plt.bar(r5, energy_task_df['SSA'], color='yellow', width=bar_width, label='SSA')\n",
    "plt.bar(r6, energy_task_df['SQSA'], color='green', width=bar_width, label='SQSA')\n",
    "plt.bar(r7, energy_task_df['BAT'], color='red', width=bar_width, label='BAT')\n",
    "plt.bar(r8, energy_task_df['FWA'], color='blue', width=bar_width, label='FWA')\n",
    "\n",
    "plt.xlabel('Number of Tasks', fontweight='bold')\n",
    "plt.ylabel('Energy', fontweight='bold')\n",
    "plt.title('Energies for different allocation algorithms', fontweight='bold')\n",
    "plt.xticks([r + bar_width*3.5 for r in range(len(energy_task_df['No of Tasks']))], energy_task_df['No of Tasks'])\n",
    "\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e49d5756",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "5f0ec1ae",
   "metadata": {},
   "source": [
    "# Makespan results ->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "id": "71d52cdb",
   "metadata": {},
   "outputs": [],
   "source": [
    "makespan_resultSS=pd.DataFrame(columns=[\"max task CPU\",\"max task memory\",\"RR\",\"SJF\",\"FWA\",\"SQSA\",\"BAT\",\"PSO\",\"BMO\",\"SSA\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "011ccb10",
   "metadata": {},
   "outputs": [],
   "source": [
    "rr_mean_makespan=0\n",
    "sjf_mean_makespan=0\n",
    "fwa_mean_makespan=0\n",
    "sqsa_mean_makespan=0\n",
    "bat_mean_makespan=0\n",
    "pso_mean_makespan=0\n",
    "bmo_mean_makespan=0\n",
    "ssa_mean_makespan=0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "44cec28d",
   "metadata": {},
   "outputs": [],
   "source": [
    "num_vms=40\n",
    "num_tasks=100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "id": "bc4cbe65",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--RR-- 381.42480631707747\n",
      "--SJF-- 389.45766599993476\n",
      "--FWA-- 290.7795686506453\n",
      "--SQSA-- 271.06694249518694\n",
      "--BAT-- 335.3133090522925\n",
      "--PSO-- 337.0593315453808\n",
      "--BMO-- 306.3617957247453\n",
      "--SSA-- 307.9251095174601\n"
     ]
    }
   ],
   "source": [
    "maxx=350\n",
    "n=5\n",
    "for _ in range(n):\n",
    "    vms = [VM(i, random.randint(1000, 3000), random.randint(1000, 2000)) for i in range(num_vms)]\n",
    "    tasks = [Task(i, random.randint(50, maxx), random.randint(50, maxx), random.randint(50, 500)) for i in range(num_tasks)]\n",
    "    \n",
    "    # RR\n",
    "    rr_makespan= rr_optimize(vms, tasks)[0]\n",
    "    rr_mean_makespan+=rr_makespan\n",
    "    \n",
    "    # SJF\n",
    "    sjf_makespan= sjf_optimize(vms, tasks)[0]\n",
    "    sjf_mean_makespan+=sjf_makespan\n",
    "    \n",
    "    #FWA\n",
    "    fwa_makespan= fwa_optimize(vms, tasks)[0]\n",
    "    fwa_mean_makespan+=fwa_makespan\n",
    "    \n",
    "    #SQSA\n",
    "    sqsa_makespan= sqsa_optimize(vms, tasks)[0]\n",
    "    sqsa_mean_makespan+=sqsa_makespan\n",
    "\n",
    "    #BAT\n",
    "    bat_makespan= bat_optimize(vms, tasks)[0]\n",
    "    bat_mean_makespan+=bat_makespan\n",
    "    \n",
    "    #PSO\n",
    "    pso_makespan= pso_optimize(vms, tasks)[0]\n",
    "    pso_mean_makespan+=pso_makespan\n",
    "\n",
    "    #BMO\n",
    "    bmo_makespan= bmo_optimize(vms, tasks)[0]\n",
    "    bmo_mean_makespan+=bmo_makespan\n",
    "    \n",
    "    #SSA\n",
    "    ssa_makespan= ssa_optimize(vms, tasks)[0]\n",
    "    ssa_mean_makespan+=ssa_makespan\n",
    "\n",
    "# RR\n",
    "rr_mean_makespan/=n\n",
    "print(\"--RR--\",rr_mean_makespan)\n",
    "\n",
    "#SJF\n",
    "sjf_mean_makespan/=n\n",
    "print(\"--SJF--\",sjf_mean_makespan)\n",
    "\n",
    "#FWA\n",
    "fwa_mean_makespan/=n\n",
    "print(\"--FWA--\",fwa_mean_makespan)\n",
    "    \n",
    "#SQSA\n",
    "sqsa_mean_makespan/=n\n",
    "print(\"--SQSA--\",sqsa_mean_makespan)\n",
    "\n",
    "#BAT\n",
    "bat_mean_makespan/=n\n",
    "print(\"--BAT--\",bat_mean_makespan)\n",
    "    \n",
    "#PSO\n",
    "pso_mean_makespan/=n\n",
    "print(\"--PSO--\",pso_mean_makespan)\n",
    "\n",
    "#BMO\n",
    "bmo_mean_makespan/=n\n",
    "print(\"--BMO--\",bmo_mean_makespan)\n",
    "\n",
    "#SSA\n",
    "ssa_mean_makespan/=n\n",
    "print(\"--SSA--\",ssa_mean_makespan)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "id": "89b65010",
   "metadata": {},
   "outputs": [],
   "source": [
    "makespan_resultSS.loc[5]=[maxx,maxx,rr_mean_makespan,sjf_mean_makespan,fwa_mean_makespan,sqsa_mean_makespan,bat_mean_makespan,pso_mean_makespan,bmo_mean_makespan,ssa_mean_makespan]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "id": "7263432e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>max task CPU</th>\n",
       "      <th>max task memory</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100.0</td>\n",
       "      <td>100.0</td>\n",
       "      <td>85.490122</td>\n",
       "      <td>84.712605</td>\n",
       "      <td>64.153695</td>\n",
       "      <td>60.737885</td>\n",
       "      <td>70.179464</td>\n",
       "      <td>70.136827</td>\n",
       "      <td>67.990053</td>\n",
       "      <td>67.547998</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>150.0</td>\n",
       "      <td>150.0</td>\n",
       "      <td>152.441602</td>\n",
       "      <td>146.423700</td>\n",
       "      <td>105.128693</td>\n",
       "      <td>110.324668</td>\n",
       "      <td>119.189744</td>\n",
       "      <td>125.975898</td>\n",
       "      <td>120.808843</td>\n",
       "      <td>109.755718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>200.0</td>\n",
       "      <td>200.0</td>\n",
       "      <td>201.181418</td>\n",
       "      <td>206.954041</td>\n",
       "      <td>156.689402</td>\n",
       "      <td>146.590138</td>\n",
       "      <td>161.141215</td>\n",
       "      <td>174.944137</td>\n",
       "      <td>169.800495</td>\n",
       "      <td>161.308764</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>250.0</td>\n",
       "      <td>250.0</td>\n",
       "      <td>249.285277</td>\n",
       "      <td>253.365512</td>\n",
       "      <td>176.883314</td>\n",
       "      <td>171.879438</td>\n",
       "      <td>184.671580</td>\n",
       "      <td>211.003155</td>\n",
       "      <td>189.368258</td>\n",
       "      <td>183.500985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>300.0</td>\n",
       "      <td>300.0</td>\n",
       "      <td>327.037005</td>\n",
       "      <td>325.801085</td>\n",
       "      <td>228.848153</td>\n",
       "      <td>220.253475</td>\n",
       "      <td>264.054259</td>\n",
       "      <td>276.591812</td>\n",
       "      <td>252.501458</td>\n",
       "      <td>250.740588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>350.0</td>\n",
       "      <td>350.0</td>\n",
       "      <td>381.424806</td>\n",
       "      <td>389.457666</td>\n",
       "      <td>290.779569</td>\n",
       "      <td>271.066942</td>\n",
       "      <td>335.313309</td>\n",
       "      <td>337.059332</td>\n",
       "      <td>306.361796</td>\n",
       "      <td>307.925110</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   max task CPU  max task memory          RR         SJF         FWA  \\\n",
       "0         100.0            100.0   85.490122   84.712605   64.153695   \n",
       "1         150.0            150.0  152.441602  146.423700  105.128693   \n",
       "2         200.0            200.0  201.181418  206.954041  156.689402   \n",
       "3         250.0            250.0  249.285277  253.365512  176.883314   \n",
       "4         300.0            300.0  327.037005  325.801085  228.848153   \n",
       "5         350.0            350.0  381.424806  389.457666  290.779569   \n",
       "\n",
       "         SQSA         BAT         PSO         BMO         SSA  \n",
       "0   60.737885   70.179464   70.136827   67.990053   67.547998  \n",
       "1  110.324668  119.189744  125.975898  120.808843  109.755718  \n",
       "2  146.590138  161.141215  174.944137  169.800495  161.308764  \n",
       "3  171.879438  184.671580  211.003155  189.368258  183.500985  \n",
       "4  220.253475  264.054259  276.591812  252.501458  250.740588  \n",
       "5  271.066942  335.313309  337.059332  306.361796  307.925110  "
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "makespan_resultSS"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "id": "98eb4d71",
   "metadata": {},
   "outputs": [],
   "source": [
    "makespan_computing_df=pd.read_excel(\"makespan vs computing.xlsx\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "id": "965118e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>max task CPU</th>\n",
       "      <th>max task memory</th>\n",
       "      <th>RR</th>\n",
       "      <th>SJF</th>\n",
       "      <th>FWA</th>\n",
       "      <th>SQSA</th>\n",
       "      <th>BAT</th>\n",
       "      <th>PSO</th>\n",
       "      <th>BMO</th>\n",
       "      <th>SSA</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100</td>\n",
       "      <td>100</td>\n",
       "      <td>85.490122</td>\n",
       "      <td>84.712605</td>\n",
       "      <td>64.153695</td>\n",
       "      <td>60.737885</td>\n",
       "      <td>70.179464</td>\n",
       "      <td>70.136827</td>\n",
       "      <td>67.990053</td>\n",
       "      <td>67.547998</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>150</td>\n",
       "      <td>150</td>\n",
       "      <td>152.441602</td>\n",
       "      <td>146.423700</td>\n",
       "      <td>105.128693</td>\n",
       "      <td>110.324668</td>\n",
       "      <td>119.189744</td>\n",
       "      <td>125.975898</td>\n",
       "      <td>120.808843</td>\n",
       "      <td>109.755718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>200</td>\n",
       "      <td>200</td>\n",
       "      <td>201.181418</td>\n",
       "      <td>206.954041</td>\n",
       "      <td>156.689402</td>\n",
       "      <td>146.590138</td>\n",
       "      <td>161.141215</td>\n",
       "      <td>174.944137</td>\n",
       "      <td>169.800495</td>\n",
       "      <td>161.308764</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>250</td>\n",
       "      <td>250</td>\n",
       "      <td>249.285277</td>\n",
       "      <td>253.365512</td>\n",
       "      <td>176.883314</td>\n",
       "      <td>171.879438</td>\n",
       "      <td>184.671580</td>\n",
       "      <td>211.003155</td>\n",
       "      <td>189.368258</td>\n",
       "      <td>183.500985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>327.037005</td>\n",
       "      <td>325.801085</td>\n",
       "      <td>228.848153</td>\n",
       "      <td>220.253475</td>\n",
       "      <td>264.054259</td>\n",
       "      <td>276.591812</td>\n",
       "      <td>252.501458</td>\n",
       "      <td>250.740588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>350</td>\n",
       "      <td>350</td>\n",
       "      <td>381.424806</td>\n",
       "      <td>389.457666</td>\n",
       "      <td>290.779569</td>\n",
       "      <td>271.066942</td>\n",
       "      <td>335.313309</td>\n",
       "      <td>337.059332</td>\n",
       "      <td>306.361796</td>\n",
       "      <td>307.925110</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   max task CPU  max task memory          RR         SJF         FWA  \\\n",
       "0           100              100   85.490122   84.712605   64.153695   \n",
       "1           150              150  152.441602  146.423700  105.128693   \n",
       "2           200              200  201.181418  206.954041  156.689402   \n",
       "3           250              250  249.285277  253.365512  176.883314   \n",
       "4           300              300  327.037005  325.801085  228.848153   \n",
       "5           350              350  381.424806  389.457666  290.779569   \n",
       "\n",
       "         SQSA         BAT         PSO         BMO         SSA  \n",
       "0   60.737885   70.179464   70.136827   67.990053   67.547998  \n",
       "1  110.324668  119.189744  125.975898  120.808843  109.755718  \n",
       "2  146.590138  161.141215  174.944137  169.800495  161.308764  \n",
       "3  171.879438  184.671580  211.003155  189.368258  183.500985  \n",
       "4  220.253475  264.054259  276.591812  252.501458  250.740588  \n",
       "5  271.066942  335.313309  337.059332  306.361796  307.925110  "
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "makespan_computing_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "id": "4323fb5e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 2500x2000 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(25,20))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "4e5d2666",
   "metadata": {},
   "outputs": [],
   "source": [
    "bar_width = 0.09\n",
    "r1 = range(len(makespan_computing_df['max task CPU']))\n",
    "r2 = [x + bar_width for x in r1]\n",
    "r3 = [x + bar_width for x in r2]\n",
    "r4 = [x + bar_width for x in r3]\n",
    "r5 = [x + bar_width for x in r4]\n",
    "r6 = [x + bar_width for x in r5]\n",
    "r7 = [x + bar_width for x in r6]\n",
    "r8 = [x + bar_width for x in r7]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "id": "076bb0d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.bar(r1, makespan_computing_df['SJF'], color='black', width=bar_width, label='SJF')\n",
    "plt.bar(r2, makespan_computing_df['RR'], color='pink', width=bar_width, label='RR')\n",
    "plt.bar(r3, makespan_computing_df['PSO'], color='cyan', width=bar_width, label='PSO')\n",
    "plt.bar(r4, makespan_computing_df['BMO'], color='magenta', width=bar_width, label='BMO')\n",
    "plt.bar(r5, makespan_computing_df['SSA'], color='yellow', width=bar_width, label='SSA')\n",
    "plt.bar(r6, makespan_computing_df['SQSA'], color='green', width=bar_width, label='SQSA')\n",
    "plt.bar(r7, makespan_computing_df['BAT'], color='red', width=bar_width, label='BAT')\n",
    "plt.bar(r8, makespan_computing_df['FWA'], color='blue', width=bar_width, label='FWA')\n",
    "\n",
    "plt.xlabel('Max computational requirement of task', fontweight='bold')\n",
    "plt.ylabel('Makespan', fontweight='bold')\n",
    "plt.title('Makespan for different allocation algorithms', fontweight='bold')\n",
    "plt.xticks([r + bar_width*3.5 for r in range(len(makespan_computing_df['max task CPU']))], makespan_computing_df['max task CPU'])\n",
    "\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "97788be9",
   "metadata": {},
   "source": [
    "### Best fitness graphs ->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "id": "57fcbe09",
   "metadata": {},
   "outputs": [],
   "source": [
    "bmo_best_fitness=[]\n",
    "ssa_best_fitness=[]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "id": "3b7549c0",
   "metadata": {},
   "outputs": [],
   "source": [
    "#FWA\n",
    "def fwa_optimize_graphed(vms,tasks):\n",
    "    fwa_best_fitness=[]\n",
    "    def generate_sparks(firework, n, amplitude, num_vms):\n",
    "        return [\n",
    "            [max(0, min(num_vms - 1, x + int(random.uniform(-amplitude, amplitude))))\n",
    "             for x in firework]\n",
    "            for _ in range(n)\n",
    "        ]\n",
    "    def fireworks_algorithm(vms, tasks, n_fireworks=5, n_sparks=30, n_iterations=40):\n",
    "        num_vms = len(vms)\n",
    "        num_tasks = len(tasks)\n",
    "\n",
    "        # Initialize fireworks\n",
    "        fireworks = [random.choices(range(num_vms), k=num_tasks) for _ in range(n_fireworks)]\n",
    "        best_solution = None\n",
    "        best_fitness = float('inf')\n",
    "\n",
    "        for _ in range(n_iterations):\n",
    "            all_solutions = fireworks.copy()\n",
    "\n",
    "            # Generate sparks\n",
    "            for firework in fireworks:\n",
    "                fitness = check_fitness(firework)[0]\n",
    "                if fitness < best_fitness:\n",
    "                    best_fitness = fitness\n",
    "                    best_solution = firework\n",
    "\n",
    "                # Calculate amplitude, ensuring it's within a reasonable range\n",
    "                amplitude = max(1, int(50 * best_fitness / fitness))\n",
    "\n",
    "                all_solutions.extend(generate_sparks(firework, n_sparks, amplitude, num_vms))\n",
    "\n",
    "            # Evaluate and select best solutions\n",
    "            all_solutions.sort(key=lambda x: check_fitness(x)[0])\n",
    "            fireworks = all_solutions[:n_fireworks]\n",
    "            \n",
    "            ##BEST FITNESS APPENDED\n",
    "            fwa_best_fitness.append(best_fitness)\n",
    "\n",
    "        return best_solution, best_fitness\n",
    "\n",
    "    best_solution, best_fitness = fireworks_algorithm(vms, tasks)\n",
    "    return fwa_best_fitness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "id": "72e330de",
   "metadata": {},
   "outputs": [],
   "source": [
    "#SQSA\n",
    "def sqsa_optimize_graphed(vms, tasks, n_squirrels=30, n_iterations=40):\n",
    "    sqsa_best_fitness=[]\n",
    "    squirrels = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_squirrels)]\n",
    "    fitness = [check_fitness(s)[0] for s in squirrels]\n",
    "\n",
    "    best_idx = fitness.index(min(fitness))\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_squirrels):\n",
    "            if i != best_idx:\n",
    "                for j in range(len(tasks)):\n",
    "                    if random.random() < 0.5:\n",
    "                        squirrels[i][j] = squirrels[best_idx][j]\n",
    "                    else:\n",
    "                        squirrels[i][j] = random.randint(0, len(vms)-1)\n",
    "        \n",
    "        fitness = [check_fitness(s)[0] for s in squirrels]\n",
    "        new_best_idx = fitness.index(min(fitness))\n",
    "        \n",
    "        ## BEST FITNESS APPENDED\n",
    "        sqsa_best_fitness.append(min(fitness))\n",
    "        \n",
    "        if fitness[new_best_idx] < fitness[best_idx]:\n",
    "            best_idx = new_best_idx\n",
    "\n",
    "    return sqsa_best_fitness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "id": "995909a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "#BAT\n",
    "def bat_optimize_graphed(vms, tasks, n_bats=30, n_iterations=40):\n",
    "    bat_best_fitness=[]\n",
    "    \n",
    "    bats = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_bats)]\n",
    "    velocities = [[0] * len(tasks) for _ in range(n_bats)]\n",
    "    fitness = [check_fitness(b)[0] for b in bats]\n",
    "    best_bat = bats[fitness.index(min(fitness))]\n",
    "    best_fitness = min(fitness)\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_bats):\n",
    "            # Generate new solution\n",
    "            freq = random.random()\n",
    "            new_bat = []\n",
    "            for j in range(len(tasks)):\n",
    "                velocities[i][j] += (bats[i][j] - best_bat[j]) * freq\n",
    "                new_position = bats[i][j] + velocities[i][j]\n",
    "                new_bat.append(max(0, min(len(vms)-1, int(new_position))))\n",
    "            \n",
    "            # Local search\n",
    "            if random.random() > 0.5:\n",
    "                new_bat = [max(0, min(len(vms)-1, best_bat[j] + int(random.gauss(0, 1))))\n",
    "                           for j in range(len(tasks))]\n",
    "            \n",
    "            # Evaluate new solution\n",
    "            new_fitness = check_fitness(new_bat)[0]\n",
    "            \n",
    "            # Update if better\n",
    "            if new_fitness < fitness[i]:\n",
    "                bats[i] = new_bat\n",
    "                fitness[i] = new_fitness\n",
    "                if new_fitness < best_fitness:\n",
    "                    best_fitness = new_fitness\n",
    "                    best_bat = new_bat\n",
    "        \n",
    "        bat_best_fitness.append(best_fitness)\n",
    "    \n",
    "    return bat_best_fitness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "id": "9c89ba4c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# PSO\n",
    "def pso_optimize_graphed(vms, tasks, n_particles=30, n_iterations=40):\n",
    "    pso_best_fitness=[]\n",
    "    \n",
    "    particles = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_particles)]\n",
    "    velocities = [[0] * len(tasks) for _ in range(n_particles)]\n",
    "    personal_best = particles.copy()\n",
    "    fitness = [check_fitness(p)[0] for p in particles]\n",
    "    global_best = particles[fitness.index(min(fitness))]\n",
    "    best_fitness = min(fitness)\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_particles):\n",
    "            # Update velocity and position\n",
    "            new_particle = []\n",
    "            for j in range(len(tasks)):\n",
    "                r1, r2 = random.random(), random.random()\n",
    "                velocities[i][j] = (0.5 * velocities[i][j] + \n",
    "                                    1 * r1 * (personal_best[i][j] - particles[i][j]) +\n",
    "                                    2 * r2 * (global_best[j] - particles[i][j]))\n",
    "                new_position = particles[i][j] + velocities[i][j]\n",
    "                new_particle.append(max(0, min(len(vms)-1, int(new_position))))\n",
    "            \n",
    "            # Evaluate new position\n",
    "            current_fitness = check_fitness(new_particle)[0]\n",
    "            \n",
    "            # Update personal best\n",
    "            if current_fitness < fitness[i]:\n",
    "                personal_best[i] = new_particle\n",
    "                fitness[i] = current_fitness\n",
    "                \n",
    "                # Update global best\n",
    "                if current_fitness < best_fitness:\n",
    "                    best_fitness = current_fitness\n",
    "                    global_best = new_particle\n",
    "            \n",
    "            # Update particle position\n",
    "            particles[i] = new_particle\n",
    "        \n",
    "        pso_best_fitness.append(best_fitness)\n",
    "\n",
    "    return pso_best_fitness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "id": "0c43b3b2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# BMO\n",
    "def bmo_optimize_graphed(vms, tasks, n_barnacles=30, n_iterations=40):\n",
    "    bmo_best_fitness=[]\n",
    "    barnacles = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_barnacles)]\n",
    "    fitness = [check_fitness(b)[0] for b in barnacles]\n",
    "    best_barnacle = barnacles[fitness.index(min(fitness))]\n",
    "    best_fitness = min(fitness)\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_barnacles):\n",
    "            if random.random() < 0.5:  # Pseudo-fertilization\n",
    "                partner = random.choice(barnacles)\n",
    "                barnacles[i] = [b if random.random() < 0.5 else p \n",
    "                                for b, p in zip(barnacles[i], partner)]\n",
    "            else:  # Larval development\n",
    "                barnacles[i] = [max(0, min(len(vms)-1, x + int(random.gauss(0, 1))))\n",
    "                                for x in barnacles[i]]\n",
    "        \n",
    "        fitness = [check_fitness(b)[0] for b in barnacles]\n",
    "        new_best_fitness = min(fitness)\n",
    "        if new_best_fitness < best_fitness:\n",
    "            best_fitness = new_best_fitness\n",
    "            best_barnacle = barnacles[fitness.index(best_fitness)]\n",
    "        \n",
    "        bmo_best_fitness.append(best_fitness)\n",
    "\n",
    "    return bmo_best_fitness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "id": "470469f1",
   "metadata": {},
   "outputs": [],
   "source": [
    "#SSA\n",
    "def ssa_optimize_graphed (vms, tasks, n_sparrows=30, n_iterations=40):\n",
    "    ssa_best_fitness=[]\n",
    "    sparrows = [random.choices(range(len(vms)), k=len(tasks)) for _ in range(n_sparrows)]\n",
    "    fitness = [check_fitness(s)[0] for s in sparrows]\n",
    "    best_sparrow = sparrows[fitness.index(min(fitness))]\n",
    "    \n",
    "    for _ in range(n_iterations):\n",
    "        for i in range(n_sparrows):\n",
    "            if i < n_sparrows // 5:  # Discoverer\n",
    "                sparrows[i] = [max(0, min(len(vms)-1, x + int(random.gauss(0, 1))))\n",
    "                               for x in sparrows[i]]\n",
    "            elif i < n_sparrows // 2:  # Joiner\n",
    "                sparrows[i] = [best_sparrow[j] if random.random() < 0.5 else sparrows[i][j]\n",
    "                               for j in range(len(tasks))]\n",
    "            else:  # Scrounger\n",
    "                sparrows[i] = [random.randint(0, len(vms)-1) if random.random() < 0.1 else sparrows[i][j]\n",
    "                               for j in range(len(tasks))]\n",
    "        \n",
    "        fitness = [check_fitness(s)[0] for s in sparrows]\n",
    "        new_best = sparrows[fitness.index(min(fitness))]\n",
    "        if check_fitness(new_best)[0] < check_fitness(best_sparrow)[0]:\n",
    "            best_sparrow = new_best\n",
    "        \n",
    "        ### BEST FITNESS APPENDED\n",
    "        ssa_best_fitness.append(min(fitness))\n",
    "        \n",
    "    return ssa_best_fitness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "id": "e42beb12",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.3712381940753709,\n",
       " 0.3254788998025994,\n",
       " 0.31756081409772285,\n",
       " 0.31756081409772285,\n",
       " 0.31756081409772285,\n",
       " 0.31756081409772285,\n",
       " 0.31756081409772285,\n",
       " 0.31756081409772285,\n",
       " 0.31756081409772285,\n",
       " 0.31756081409772285,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856,\n",
       " 0.31289668704014856]"
      ]
     },
     "execution_count": 243,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fwa_fitness_values=fwa_optimize_graphed(vms,tasks)\n",
    "fwa_fitness_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "id": "61e014d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.32366911243889107,\n",
       " 0.32366911243889107,\n",
       " 0.32366911243889107,\n",
       " 0.32366911243889107,\n",
       " 0.32366911243889107,\n",
       " 0.32366911243889107,\n",
       " 0.32318926905758777,\n",
       " 0.32318926905758777,\n",
       " 0.32318926905758777,\n",
       " 0.32318926905758777,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3219346288148542,\n",
       " 0.3188655194940737,\n",
       " 0.3188655194940737,\n",
       " 0.3188655194940737,\n",
       " 0.3188655194940737,\n",
       " 0.3188655194940737,\n",
       " 0.3188655194940737,\n",
       " 0.3188655194940737,\n",
       " 0.3188655194940737]"
      ]
     },
     "execution_count": 244,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqsa_fitness_values=sqsa_optimize_graphed(vms,tasks)\n",
    "sqsa_fitness_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 246,
   "id": "7f556c4c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.34237306989009086,\n",
       " 0.34237306989009086,\n",
       " 0.34237306989009086,\n",
       " 0.33355408915207607,\n",
       " 0.33355408915207607,\n",
       " 0.33355408915207607,\n",
       " 0.33355408915207607,\n",
       " 0.33355408915207607,\n",
       " 0.33199525838970007,\n",
       " 0.3296359286503332,\n",
       " 0.3296359286503332,\n",
       " 0.3296359286503332,\n",
       " 0.32318644649164546,\n",
       " 0.32318644649164546,\n",
       " 0.32318644649164546,\n",
       " 0.32318644649164546,\n",
       " 0.32318644649164546,\n",
       " 0.32318644649164546,\n",
       " 0.32318644649164546,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317,\n",
       " 0.3148221789556317]"
      ]
     },
     "execution_count": 246,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bat_fitness_values=bat_optimize_graphed(vms,tasks)\n",
    "bat_fitness_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "id": "f2eb2091",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.35636433672914525,\n",
       " 0.35221238234540625,\n",
       " 0.34188219747745463,\n",
       " 0.34188219747745463,\n",
       " 0.34188219747745463,\n",
       " 0.3415887762841181,\n",
       " 0.34103687406352357,\n",
       " 0.34103687406352357,\n",
       " 0.34096504788907256,\n",
       " 0.3340771327567626,\n",
       " 0.3340771327567626,\n",
       " 0.3314016782084503,\n",
       " 0.3314016782084503,\n",
       " 0.3314016782084503,\n",
       " 0.3286151086055321,\n",
       " 0.3251510743667613,\n",
       " 0.3251510743667613,\n",
       " 0.3251510743667613,\n",
       " 0.3251510743667613,\n",
       " 0.3251510743667613,\n",
       " 0.3251510743667613,\n",
       " 0.3251510743667613,\n",
       " 0.3251510743667613,\n",
       " 0.3223605406091024,\n",
       " 0.3223605406091024,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.3219260276280477,\n",
       " 0.31831168351833244,\n",
       " 0.31831168351833244,\n",
       " 0.31831168351833244]"
      ]
     },
     "execution_count": 247,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pso_fitness_values=pso_optimize_graphed(vms,tasks)\n",
    "pso_fitness_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "id": "9028ad6a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.347592007313761,\n",
       " 0.34168018768395325,\n",
       " 0.33794945776297936,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33764368227430186,\n",
       " 0.33722119959899477,\n",
       " 0.33722119959899477,\n",
       " 0.33544072318142043,\n",
       " 0.33544072318142043,\n",
       " 0.33544072318142043,\n",
       " 0.33544072318142043,\n",
       " 0.33544072318142043,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232,\n",
       " 0.3283824988376232]"
      ]
     },
     "execution_count": 248,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bmo_fitness_values=bmo_optimize_graphed(vms,tasks)\n",
    "bmo_fitness_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "id": "b1766447",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.3697754534484048,\n",
       " 0.3662737267104266,\n",
       " 0.3618172843893672,\n",
       " 0.3549287495255651,\n",
       " 0.34478153067961015,\n",
       " 0.3392776807907887,\n",
       " 0.3392776807907887,\n",
       " 0.33392655119112086,\n",
       " 0.33392655119112086,\n",
       " 0.33214591202361066,\n",
       " 0.33199641975655253,\n",
       " 0.3319001604210827,\n",
       " 0.3300943873949576,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995,\n",
       " 0.3299448951278995]"
      ]
     },
     "execution_count": 255,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ssa_fitness_values=ssa_optimize_graphed(vms,tasks)\n",
    "ssa_fitness_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 305,
   "id": "b45b9e65",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1da852005e0>"
      ]
     },
     "execution_count": 305,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(fwa_fitness_values,label=\"FWA\",color=\"blue\")\n",
    "plt.plot(sqsa_fitness_values,label=\"SQSA\",color=\"green\")\n",
    "plt.plot(bat_fitness_values,label=\"BAT\",color=\"red\")\n",
    "plt.plot(pso_fitness_values,label=\"PSO\",color=\"cyan\")\n",
    "plt.plot(bmo_fitness_values,label=\"BMO\",color=\"magenta\")\n",
    "plt.plot(ssa_fitness_values,label=\"SSA\",color=\"gold\")\n",
    "plt.xlabel(\"No of iterations\")\n",
    "plt.ylabel(\"Fitness values\")\n",
    "plt.title('Convergence comparison for different algorithms', fontweight='bold')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 295,
   "id": "291b2b04",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1da82b86b80>"
      ]
     },
     "execution_count": 295,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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fv2Qm5uLmJgYnQBkYWEBHx8fAMDAgQNx+vRpxMbG1huAVCoVVCpVE0bT/HhDVCIiIuORbQ2QtbU1AgICkJCQoLM9ISEBQ4YM0bsfIQTKysqa3Kal4Q1RiYiIjEfWQ2BRUVGYMmUKAgMDERQUhI0bNyI7OxuzZs0CUHVo6sqVK9i2bRsAYO3atXB3d4evry+AqusCLV++HHPnzpX6jI2NRWBgILy9vVFeXo59+/Zh27ZtOmeatQY8BEZERGQ8sgag8PBwFBQUYPHixdBoNPD398e+ffvg4eEBANBoNMjOzpbaa7VaREdHIysrC5aWlvD29sbSpUsREREhtSkpKcHLL7+My5cvSxdL/Pvf/47w8HCTj68pGICIiIiMR9brALVULeE6QG++CSxbBkRFAR99JEsJRERErUqruA4QNax6ETTXABERETU/BqAWiofAiIiIjIcBqIViACIiIjIeBqAWigGIiIjIeBiAWiiuASIiIjIeBqAWijNARERExsMA1EIxABERERkPA1ALxQBERERkPAxALRTXABERERkPA1ALVXMGiNfqJiIial4MQC1UdQASArh9W95aiIiI2hoGoBaqOgABXAdERETU3BiAWiilElCpqp4zABERETUvBqAWjAuhiYiIjIMBqAXjqfBERETGwQDUgjEAERERGQcDUAvGAERERGQcDEAtGNcAERERGQcDUAvGGSAiIiLjYABqwTp0qPqnRiNrGURERG0OA1AL9sADVf88eFDeOoiIiNoaBqAWbMSIqn8eOgSUl8tbCxERUVvCANSC9e0LODoCpaXAsWNyV0NERNR2MAC1YBYWwPDhVc8TE2UthYiIqE1hAGrhqg+DMQARERE1HwagFq46AKWmAmVl8tZCRETUVjAAtXC+voCzM3D7NnDkiNzVEBERtQ0MQC2cQsF1QERERM2NAagV4DogIiKi5sUA1ApUB6AjR4Bbt+SthYiIqC1gAGoFevYEunWruhhiaqrc1RAREbV+DECtgELxv1mgpCRZSyEiImoTGIBaCa4DIiIiaj4MQK1EdQA6ehQoKZG3FiIiotaOAaiV8PIC3N2BO3eqbo5KREREjccA1ErUXAfEw2BERERNwwDUijAAERERNQ8GoFak+orQx48DxcWylkJERNSqMQC1Ih4eVWuBKiuB5GS5qyEiImq9GIBaGR4GIyIiajoGoFaGAYiIiKjpGIBameoAlJ4O3LghaylEREStFgNQK9O9e9W9wbRargMiIiJqLAagVoiHwYiIiJqGAagVYgAiIiJqGgagVqj6ekD//jdw/bqspRAREbVKDECtkIsL4OcHCAEcOCB3NURERK2P7AEoPj4eXl5esLGxQUBAAJIbWNmbkpKC4OBgdO7cGba2tvD19UVcXJxOm08++QRDhw5Fx44d0bFjR4waNQpHjx419jBMjofBiIiIGk/WALRz505ERkZi/vz5SE9Px9ChQxEWFobs7Ow626vVasyZMwcHDx7E6dOn8c477+Cdd97Bxo0bpTZJSUmYNGkSEhMTcfjwYbi7uyM0NBRXrlwx1bBMovowGAMQERGR4RRCCCHXlw8ePBiDBg3CunXrpG1+fn4YN24cYmNj9epjwoQJUKvV2L59e53vV1ZWomPHjvj444/x3HPP6dVnUVERHBwcUFhYCHt7e70+Y2rXrgFOTlXP8/KALl3krYeIiEhuhvx+yzYDVF5ejrS0NISGhupsDw0NRWpqql59pKenIzU1FSEhIfW2KS0txZ07d9CpU6d625SVlaGoqEjn0dJ16QL4+1c9T0qStRQiIqJWR7YAlJ+fj8rKSjg7O+tsd3Z2Rk5OToOfdXV1hUqlQmBgIGbPno0ZM2bU23bevHno3r07Ro0aVW+b2NhYODg4SA83NzfDBiOT6nVADEBERESGkX0RtEKh0HkthKi17W7Jyck4fvw41q9fj5UrV2LHjh11tvvwww+xY8cO7NmzBzY2NvX2Fx0djcLCQulx6dIlwwciAy6EJiIiahxLub7Y0dERSqWy1mxPXl5erVmhu3l5eQEA+vXrh9zcXMTExGDSpEk6bZYvX473338f//rXv9C/f/8G+1OpVFCpVI0YhbxCQgCFAjh9GsjJqTo9noiIiO5Nthkga2trBAQEICEhQWd7QkIChgwZonc/QgiUlZXpbFu2bBmWLFmCH3/8EYGBgc1Sb0vUqRMwYEDVcx4GIyIi0p9sM0AAEBUVhSlTpiAwMBBBQUHYuHEjsrOzMWvWLABVh6auXLmCbdu2AQDWrl0Ld3d3+Pr6Aqi6LtDy5csxd+5cqc8PP/wQCxYswOeffw5PT09phql9+/Zo3769iUdofCNGABkZVYfBnn5a7mqIiIhaB1kDUHh4OAoKCrB48WJoNBr4+/tj37598PDwAABoNBqdawJptVpER0cjKysLlpaW8Pb2xtKlSxERESG1iY+PR3l5OZ588kmd71q4cCFiYmJMMi5TGjECiIvjOiAiIiJDyHodoJaqNVwHqFphYdWhMK0WuHwZ6N5d7oqIiIjk0SquA0TNw8EBGDSo6jlngYiIiPTDANQG8HR4IiIiwzAAtQG8LxgREZFhGIDagKFDAaUSyMoC/vhD7mqIiIhaPgagNsDODqi+3BGvB0RERHRvDEBtBNcBERER6Y+nwdehNZ0GX23/fmDMmKrnlrJe3an1e+op4PPP5a6CiIgMZcjvNwNQHVpjACotBfr2BS5elLuStuHYsf8dViQiotbBkN9vzhW0Ee3aAWfPAvn5clfSukVFATt3AqtXA/+9AwsREbVBnAGqQ2ucAaLmcewY8MADgJUVkJ0NuLjIXREREemLV4ImaqT77weCgoA7d4CNG+WuhoiIjIUBiOguf/1r1T/XrQPKy+WthYiIjIMBiOguTzwBdOsG5OQAu3fLXQ0RERkDAxDRXaysgJdeqnq+erW8tRARkXEwABHVYeZMwNoa+OWXqgcREbUtDEBEdXByAiZNqnrOWSAioraHAYioHtWLoXftAq5elbcWIiJqXgxARPUYNAj4v/8DKiqADRvkroaIiJoTAxBRA6pngdavB8rK5K2FiIiaDwMQUQPGjQNcXYG8vKpbZBARUdvAAETUACsr4OWXq56vXg3wxjFERG0DAxDRPbz4ImBjA6SlAYcPy10NERE1BwYgontwdASefbbqOU+JJyJqGxiAiPQwd27VP3fvBi5flrcWIiJqOgYgIj0MGACEhACVlVVnhBERUevGAESkp+pT4jdsAG7flrcWIiJqGgYgIj395S+AuzuQnw/s2CF3NURE1BQMQER6srQEZs+ues5T4omIWjcGICIDzJgB2NoCGRlASorc1RARUWMxABEZoFMnYMqUquc8JZ6IqPViACIyUPUp8Xv3AtnZ8tZCRESNwwBEZCB/f2DkyKpT4uPj5a6GiIgaw1LuAohao7/+Ffj5Z+CTT6rWBVlZyV0REVHrolIBLi7yfT8DEFEjPPYY4OkJXLwI9OwpdzVERK1PUBCQmirf9zMAETWCUgm8917VneLLyuSuhoio9bG2lvf7FULwaiZ3KyoqgoODAwoLC2Fvby93OURERKQHQ36/uQiaiIiIzA4DEBEREZkdBiAiIiIyOwxAREREZHYYgIiIiMjsMAARERGR2WEAIiIiIrPDAERERERmhwGIiIiIzA4DEBEREZkd2QNQfHw8vLy8YGNjg4CAACQnJ9fbNiUlBcHBwejcuTNsbW3h6+uLuLg4nTa//fYbnnjiCXh6ekKhUGDlypVGHgERERG1NrIGoJ07dyIyMhLz589Heno6hg4dirCwMGRnZ9fZXq1WY86cOTh48CBOnz6Nd955B++88w42btwotSktLUWPHj2wdOlSuLi4mGooRERE1IrIejPUwYMHY9CgQVi3bp20zc/PD+PGjUNsbKxefUyYMAFqtRrbt2+v9Z6npyciIyMRGRlpUF28GSoREVHr0ypuhlpeXo60tDSEhobqbA8NDUVqaqpefaSnpyM1NRUhISHGKJGIiIjaKEu5vjg/Px+VlZVwdnbW2e7s7IycnJwGP+vq6opr166hoqICMTExmDFjRpNqKSsrQ1lZmfS6sLAQQFWSJCIiotah+ndbn4NbsgWgagqFQue1EKLWtrslJyfj5s2bOHLkCObNmwcfHx9MmjSp0TXExsZi0aJFtba7ubk1uk8iIiKSR3FxMRwcHBpsI1sAcnR0hFKprDXbk5eXV2tW6G5eXl4AgH79+iE3NxcxMTFNCkDR0dGIioqSXmu1Wly/fh2dO3e+ZxgzVFFREdzc3HDp0qU2vb7IHMZpDmMEOM62huNsO8xhjIBh4xRCoLi4GN26dbtnv7IFIGtrawQEBCAhIQHjx4+XtickJGDs2LF69yOE0Dl81RgqlQoqlUpnW4cOHZrU573Y29u36X9hq5nDOM1hjADH2dZwnG2HOYwR0H+c95r5qSbrIbCoqChMmTIFgYGBCAoKwsaNG5GdnY1Zs2YBqJqZuXLlCrZt2wYAWLt2Ldzd3eHr6wug6rpAy5cvx9y5c6U+y8vLkZmZKT2/cuUKMjIy0L59e/j4+Jh4hERERNQSyRqAwsPDUVBQgMWLF0Oj0cDf3x/79u2Dh4cHAECj0ehcE0ir1SI6OhpZWVmwtLSEt7c3li5dioiICKnN1atXcd9990mvly9fjuXLlyMkJARJSUkmGxsRERG1XLIvgn755Zfx8ssv1/neli1bdF7PnTtXZ7anLp6ennqt/paLSqXCwoULax1ya2vMYZzmMEaA42xrOM62wxzGCBhvnLJeCJGIiIhIDrLfC4yIiIjI1BiAiIiIyOwwABEREZHZYQAiIiIis8MAZELx8fHw8vKCjY0NAgICkJycLHdJzSomJgYKhULn4eLiIndZTXbw4EE8/vjj6NatGxQKBb7++mud94UQiImJQbdu3WBra4vhw4fjt99+k6fYJrjXOKdNm1Zr/z744IPyFNtIsbGxuP/++2FnZwcnJyeMGzcOZ8+e1WnTFvanPuNsC/tz3bp16N+/v3SBvKCgIPzwww/S+21hXwL3Hmdb2Jd3i42NhUKhQGRkpLStufcnA5CJ7Ny5E5GRkZg/fz7S09MxdOhQhIWF6VznqC3o27cvNBqN9Dh16pTcJTVZSUkJBgwYgI8//rjO9z/88EOsWLECH3/8MY4dOwYXFxeMHj0axcXFJq60ae41TgB4+OGHdfbvvn37TFhh0x04cACzZ8/GkSNHkJCQgIqKCoSGhqKkpERq0xb2pz7jBFr//nR1dcXSpUtx/PhxHD9+HCNHjsTYsWOlH8W2sC+Be48TaP37sqZjx45h48aN6N+/v872Zt+fgkzigQceELNmzdLZ5uvrK+bNmydTRc1v4cKFYsCAAXKXYVQAxN69e6XXWq1WuLi4iKVLl0rbbt++LRwcHMT69etlqLB53D1OIYSYOnWqGDt2rCz1GEteXp4AIA4cOCCEaLv78+5xCtE296cQQnTs2FF8+umnbXZfVqsepxBta18WFxeLnj17ioSEBBESEiJeeeUVIYRx/rfJGSATKC8vR1paGkJDQ3W2h4aGIjU1VaaqjOP8+fPo1q0bvLy88PTTT+PChQtyl2RUWVlZyMnJ0dm3KpUKISEhbW7fAkBSUhKcnJzQq1cvvPjii8jLy5O7pCYpLCwEAHTq1AlA292fd4+zWlvan5WVlfjiiy9QUlKCoKCgNrsv7x5ntbayL2fPno1HH30Uo0aN0tlujP0p+5WgzUF+fj4qKytr3eXe2dkZOTk5MlXV/AYPHoxt27ahV69eyM3Nxd/+9jcMGTIEv/32Gzp37ix3eUZRvf/q2rd//PGHHCUZTVhYGJ566il4eHggKysLCxYswMiRI5GWltYqr0QrhEBUVBT+7//+D/7+/gDa5v6sa5xA29mfp06dQlBQEG7fvo327dtj79696NOnj/Sj2Fb2ZX3jBNrOvvziiy9w4sQJHDt2rNZ7xvjfJgOQCSkUCp3XQoha21qzsLAw6Xm/fv0QFBQEb29vbN26FVFRUTJWZnxtfd8CVffuq+bv74/AwEB4eHjgn//8JyZMmCBjZY0zZ84cnDx5EikpKbXea0v7s75xtpX92bt3b2RkZODGjRv46quvMHXqVBw4cEB6v63sy/rG2adPnzaxLy9duoRXXnkF+/fvh42NTb3tmnN/8hCYCTg6OkKpVNaa7cnLy6uVZtsStVqNfv364fz583KXYjTVZ7mZ274FgK5du8LDw6NV7t+5c+fi22+/RWJiIlxdXaXtbW1/1jfOurTW/WltbQ0fHx8EBgYiNjYWAwYMwKpVq9rcvqxvnHVpjfsyLS0NeXl5CAgIgKWlJSwtLXHgwAGsXr0alpaW0j5rzv3JAGQC1tbWCAgIQEJCgs72hIQEDBkyRKaqjK+srAynT59G165d5S7FaLy8vODi4qKzb8vLy3HgwIE2vW8BoKCgAJcuXWpV+1cIgTlz5mDPnj34+eef4eXlpfN+W9mf9xpnXVrj/qyLEAJlZWVtZl/Wp3qcdWmN+/Khhx7CqVOnkJGRIT0CAwPx7LPPIiMjAz169Gj+/dnopdpkkC+++EJYWVmJTZs2iczMTBEZGSnUarW4ePGi3KU1m9dee00kJSWJCxcuiCNHjojHHntM2NnZtfoxFhcXi/T0dJGeni4AiBUrVoj09HTxxx9/CCGEWLp0qXBwcBB79uwRp06dEpMmTRJdu3YVRUVFMldumIbGWVxcLF577TWRmpoqsrKyRGJioggKChLdu3dvVeN86aWXhIODg0hKShIajUZ6lJaWSm3awv681zjbyv6Mjo4WBw8eFFlZWeLkyZPi7bffFhYWFmL//v1CiLaxL4VoeJxtZV/WpeZZYEI0//5kADKhtWvXCg8PD2FtbS0GDRqkc0pqWxAeHi66du0qrKysRLdu3cSECRPEb7/9JndZTZaYmCgA1HpMnTpVCFF1eubChQuFi4uLUKlUYtiwYeLUqVPyFt0IDY2ztLRUhIaGii5duggrKyvh7u4upk6dKrKzs+Uu2yB1jQ+A2Lx5s9SmLezPe42zrezP559/XvpvapcuXcRDDz0khR8h2sa+FKLhcbaVfVmXuwNQc+9PhRBCNG7uiIiIiKh14hogIiIiMjsMQERERGR2GICIiIjI7DAAERERkdlhACIiIiKzwwBEREREZocBiIiIiMwOAxARtXg5OTkYPXo01Go1OnToUGebadOmYdy4cSatSx+enp5YuXKl3GUQ0V0YgIjonqZNmwaFQoGlS5fqbP/6669NcmftuLg4aDQaZGRk4Ny5c3W2WbVqFbZs2SK9Hj58OCIjI41eW7UtW7bUGc6OHTuGmTNnmqwOItIPAxAR6cXGxgYffPAB/vzzT5N/9++//46AgAD07NkTTk5OdbZxcHCod3aoKcrLy5v0+S5duqBdu3bNVA0RNRcGICLSy6hRo+Di4oLY2NgG23311Vfo27cvVCoVPD098dFHH92z73Xr1sHb2xvW1tbo3bs3tm/fLr3n6emJr776Ctu2bYNCocC0adPq7KPmIbBp06bhwIEDWLVqFRQKBRQKBS5evAgAyMzMxCOPPIL27dvD2dkZU6ZMQX5+vtTP8OHDMWfOHERFRcHR0RGjR48GAKxYsQL9+vWDWq2Gm5sbXn75Zdy8eRMAkJSUhOnTp6OwsFD6vpiYGKn+mofAsrOzMXbsWLRv3x729vaYOHEicnNzpfdjYmIwcOBAbN++HZ6ennBwcMDTTz+N4uJiqc3u3bvRr18/2NraonPnzhg1ahRKSkru+Xcmov9hACIivSiVSrz//vtYs2YNLl++XGebtLQ0TJw4EU8//TROnTqFmJgYLFiwQOfQ1N327t2LV155Ba+99hp+/fVXREREYPr06UhMTARQdQjp4YcfxsSJE6HRaLBq1ap71rpq1SoEBQXhxRdfhEajgUajgZubGzQaDUJCQjBw4EAcP34cP/74I3JzczFx4kSdz2/duhWWlpY4dOgQNmzYAACwsLDA6tWr8euvv2Lr1q34+eef8eabbwIAhgwZgpUrV8Le3l76vtdff71WXUIIjBs3DtevX8eBAweQkJCA33//HeHh4Trtfv/9d3z99df4/vvv8f333+PAgQPS4UeNRoNJkybh+eefx+nTp5GUlIQJEyaAt3UkMlATb9ZKRGZg6tSpYuzYsUIIIR588EHx/PPPCyGE2Lt3r6j5n5FnnnlGjB49Wuezb7zxhujTp0+9fQ8ZMkS8+OKLOtueeuop8cgjj0ivx44dK6ZOnap3jULUvpO0EEIsWLBAhIaG6my7dOmSACDOnj0rfW7gwIENfpcQQuzatUt07txZer1582bh4OBQq52Hh4eIi4sTQgixf/9+oVQqde7U/dtvvwkA4ujRo0IIIRYuXCjatWsnioqKpDZvvPGGGDx4sBBCiLS0NAFAXLx48Z41ElH9OANERAb54IMPsHXrVmRmZtZ67/Tp0wgODtbZFhwcjPPnz6OysrLO/ur7zOnTp5uv6P9KS0tDYmIi2rdvLz18fX0BVM26VAsMDKz12cTERIwePRrdu3eHnZ0dnnvuORQUFBh06On06dNwc3ODm5ubtK1Pnz7o0KGDzng9PT1hZ2cnve7atSvy8vIAAAMGDMBDDz2Efv364amnnsInn3wiy7osotaOAYiIDDJs2DCMGTMGb7/9dq33hBC1zgoTehyaqeszxji7TKvV4vHHH0dGRobO4/z58xg2bJjUTq1W63zujz/+wCOPPAJ/f3989dVXSEtLw9q1awEAd+7c0fv76xvX3dutrKx03lcoFNBqtQCqDkUmJCTghx9+QJ8+fbBmzRr07t0bWVlZetdBRAxARNQIS5cuxXfffYfU1FSd7X369EFKSorOttTUVPTq1QtKpbLOvvz8/Or8jJ+fX5NqtLa2rjXrNGjQIPz222/w9PSEj4+PzuPu0FPT8ePHUVFRgY8++ggPPvggevXqhatXr97z++7Wp08fZGdn49KlS9K2zMxMFBYWGjRehUKB4OBgLFq0COnp6bC2tsbevXv1/jwRMQARUSP069cPzz77LNasWaOz/bXXXsNPP/2EJUuW4Ny5c9i6dSs+/vjjOhcEV3vjjTewZcsWrF+/HufPn8eKFSuwZ8+eBj+jD09PT/zyyy+4ePEi8vPzodVqMXv2bFy/fh2TJk3C0aNHceHCBezfvx/PP/98g+HF29sbFRUVWLNmDS5cuIDt27dj/fr1tb7v5s2b+Omnn5Cfn4/S0tJa/YwaNQr9+/fHs88+ixMnTuDo0aN47rnnEBISUudht7r88ssveP/993H8+HFkZ2djz549uHbtWpMDI5G5YQAiokZZsmRJrcNbgwYNwq5du/DFF1/A398f7777LhYvXlzvqesAMG7cOKxatQrLli1D3759sWHDBmzevBnDhw9vUn2vv/46lEol+vTpgy5duiA7OxvdunXDoUOHUFlZiTFjxsDf3x+vvPIKHBwcYGFR/38OBw4ciBUrVuCDDz6Av78//vGPf9S6HMCQIUMwa9YshIeHo0uXLvjwww9r9aNQKPD111+jY8eOGDZsGEaNGoUePXpg586deo/L3t4eBw8exCOPPIJevXrhnXfewUcffYSwsDD9/zhEBIXQ5wA9ERERURvCGSAiIiIyOwxAREREZHYYgIiIiMjsMAARERGR2WEAIiIiIrPDAERERERmhwGIiIiIzA4DEBEREZkdBiAiIiIyOwxAREREZHYYgIiIiMjsMAARERGR2fn/Y0wRUCPyud8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(fwa_fitness_values,label=\"FWA\",color=\"blue\")\n",
    "plt.xlabel(\"No of iterations\")\n",
    "plt.ylabel(\"Fitness values\")\n",
    "plt.title('Convergence of FWA', fontweight='bold')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 297,
   "id": "ba17faa2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1da82c590d0>"
      ]
     },
     "execution_count": 297,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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qVhJbG1t0bVrV1y8eFHuUppM9d17xnZuAaB169bw8fFplud36tSp+P7775GUlARPT09pudLOZ13HqU1zPZ8WFhZo3749goODERcXh+7du2PZsmWKO5d1Hac2zfFcpqWlIS8vD0FBQTAzM4OZmRn279+Pzz77DGZmZtI50+f5ZEgyEBYWFggKCkJiYqLG8sTERISGhspUVdMrKyvD2bNn0bp1a7lLaTJ+fn5wd3fXOLfl5eXYv3+/os8tABQUFCA7O7tZnV8hBKZMmYLt27fjl19+gZ+fn8b7SjmfDztObZrj+dRGCIGysjLFnMu6VB+nNs3xXD777LM4deoUMjIypEdwcDBefvllZGRkoG3btvo/nw0eXk56t2XLFmFubi7Wrl0rzpw5I6ZNmyZsbW3F5cuX5S5Nb95++22RnJwsLl26JI4cOSL+9re/CXt7+2Z/jMXFxSI9PV2kp6cLAGLJkiUiPT1dXLlyRQghxPz584Wjo6PYvn27OHXqlBg1apRo3bq1KCoqkrly3TzoOIuLi8Xbb78tUlNTRWZmpkhKShIhISHCw8OjWR3nP//5T+Ho6CiSk5NFTk6O9CgtLZXaKOF8Puw4lXI+Y2JixIEDB0RmZqY4efKkmDFjhjAxMRF79+4VQijjXArx4ONUyrnUpubdbULo/3wyJBmYzz//XPj4+AgLCwvRo0cPjdtxlSAqKkq0bt1amJubizZt2oihQ4eK06dPy11WoyUlJQkAtR5jx44VQty7NXXOnDnC3d1dWFpaij59+ohTp07JW3QDPOg4S0tLRUREhGjVqpUwNzcX3t7eYuzYsSIrK0vusnWi7fgAiHXr1kltlHA+H3acSjmfr776qvTf1FatWolnn31WCkhCKONcCvHg41TKudTm/pCk7/OpEkKIhvVBERERESkXxyQRERERacGQRERERKQFQxIRERGRFgxJRERERFowJBERERFpwZBEREREpAVDEhEREZEWDElEpAg3btxA//79YWtrixYtWmhtM27cOAwZMuSR1lUfvr6+WLp0qdxlENF9GJKISC/GjRsHlUqF+fPnayzfuXPnI/lF9fj4eOTk5CAjIwMXLlzQ2mbZsmX46quvpNd9+/bFtGnTmry2al999ZXWAHfs2DH84x//eGR1EFH9MCQRkd5YWVnh008/xZ9//vnI9/3HH38gKCgIHTp0gKur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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(sqsa_fitness_values,label=\"SQSA\",color=\"green\")\n",
    "plt.xlabel(\"No of iterations\")\n",
    "plt.ylabel(\"Fitness values\")\n",
    "plt.title('Convergence of SQSA', fontweight='bold')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 299,
   "id": "cf08085a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1da82dbcc10>"
      ]
     },
     "execution_count": 299,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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eO+99/C///0Pmzdvxg8//IAXXngBABAZGYnly5fDyclJ2t/cuXMb1CWEwOjRo/Hbb79h//79SE1Nxa+//oq4uDiNdr/++it27tyJr776Cl999RX2798vXerMz89HfHw8nnjiCZw6dQr79u3D2LFjwUd1EumphQ/gJSISQggxefJkMWrUKCGEEP379xdPPPGEEEKIzz77TNT/T82jjz4qhg0bpvHd559/XvTs2bPRbUdGRoqnnnpKY924cePE8OHDpfejRo0SkydP1rlGIRo+QVwIIebPny9iYmI01uXl5QkA4syZM9L3+vbt2+S+hBDiP//5j3BxcZHef/jhh0KlUjVo5+fnJ5YtWyaEEOL7778X1tbWGk9oP3HihAAgDh06JIQQYsGCBaJ9+/airKxMavP888+LiIgIIYQQmZmZAoC4cOHCXWskosaxJ4mIDO6tt97C5s2bcfLkyQafnTp1ClFRURrroqKicO7cOdTU1GjdXmPfOXXqlOGK/kNmZib27t0LR0dH6RUcHAxA3XtTJzw8vMF39+7di2HDhqFLly7o0KEDHn/8cZSUlOh1mevUqVPw8fGBj4+PtK5nz55wdnbWOF5/f3906NBBeu/p6YmioiIAQJ8+fXD//fcjNDQU48aNw8aNG2UZJ0Zk6hiSiMjgBg0ahAceeAAvvfRSg8+EEA3udhM6XAbS9p3WuGuutrYWI0eORHZ2tsbr3LlzGDRokNROqVRqfO/ixYsYPnw4QkJC8OmnnyIzMxOrV68GANy6dUvn/Td2XHeut7W11fhcoVCgtrYWgPqyZ2pqKr755hv07NkTK1euRPfu3ZGTk6NzHUTEkERErWTx4sX48ssvkZGRobG+Z8+eSE9P11iXkZGBbt26wdraWuu2evToofU7PXr0aFGNdnZ2DXqv+vXrhxMnTsDf3x9BQUEarzuDUX1HjhzB7du38c4776B///7o1q0brly5ctf93alnz57Izc1FXl6etO7kyZMoLS3V63gVCgWioqLw2muvISsrC3Z2dvjss890/j4RMSQRUSsJDQ3FY489hpUrV2qsf+6557Bnzx4sWrQIZ8+exebNm7Fq1Sqtg5jrPP/889i0aRPWrVuHc+fO4d1338WOHTua/I4u/P398fPPP+PChQsoLi5GbW0tZs6cid9++w3x8fE4dOgQzp8/j++//x5PPPFEkwEnMDAQt2/fxsqVK3H+/Hls2bIF69ata7C/69evY8+ePSguLkZlZWWD7QwdOhS9e/fGY489hqNHj+LQoUN4/PHHER0drfUSnzY///wz3nzzTRw5cgS5ubnYsWMHrl692uJQSWRpGJKIqNUsWrSowaW0fv364T//+Q8+/vhjhISE4NVXX8XChQsbvW0fAEaPHo0VK1bg7bffRq9evbB+/Xp8+OGHGDx4cIvqmzt3LqytrdGzZ0+4ubkhNzcXXl5e+PHHH1FTU4MHHngAISEhePbZZ6FSqWBl1fh/Mvv27Yt3330Xb731FkJCQvDvf/+7wVQIkZGRmDFjBuLi4uDm5oYlS5Y02I5CocDOnTvRsWNHDBo0CEOHDsU999yDbdu26XxcTk5OOHDgAIYPH45u3brhlVdewTvvvIPY2FjdfzlEBIXQZTAAERERkYVhTxIRERGRFgxJRERERFowJBERERFpwZBEREREpAVDEhEREZEWDElEREREWjAkEREREWnBkERERESkBUMSERERkRYMSURERERaMCQRERERacGQRERERKTF/weBjC3NmCJHUAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(bat_fitness_values,label=\"BAT\",color=\"red\")\n",
    "plt.xlabel(\"No of iterations\")\n",
    "plt.ylabel(\"Fitness values\")\n",
    "plt.title('Convergence of BAT', fontweight='bold')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 300,
   "id": "74bbc949",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1da82e24f10>"
      ]
     },
     "execution_count": 300,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkkAAAHFCAYAAADmGm0KAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABZDUlEQVR4nO3de1xVZb7H8c+Wq24FFRVv3PISXlATCpVRuyhFjWk2pVamlqUn9eSQNZI2kjlhjaVlXrLp5GVOZlNmTdmFyhQzJyUYTU2dxFDjIkyC6QgK6/yxYR+3bJSN4ILN9/16rdda+9nPWs9vsar961nPepbFMAwDEREREXHQyOwAREREROoiJUkiIiIiTihJEhEREXFCSZKIiIiIE0qSRERERJxQkiQiIiLihJIkERERESeUJImIiIg4oSRJRERExAklSSL1RH5+Pn/6058YMGAALVu2xMfHh6CgIG688UYWL17MqVOnzA5R6oDS0lL++Mc/0qlTJ3x9fbFYLDRv3vyi+1gslgqLt7c3wcHBjBs3jgMHDlTYZ/369dx00020bNkSLy8vAgICCA8PZ+TIkaxatcppOykpKdxzzz2Ehobi6+tLs2bN6NGjB48++iiHDh2qidMXqVEWvZZEpO7btGkTo0aN4vjx45XWSUtLo0+fPlcuKKmTXn31VSZPnuxQ5u/vz4kTJyrdx2KxXPSYVquVzZs3ExkZCcBLL73E9OnTK61/22238eGHHzqUPfbYY7z44ouV7tO4cWPeeOMNRo0addFYRK4k9SSJ1HEHDhzg9ttvtydIcXFxfPfddxQVFZGfn8/777/PjTfeaHKUtef06dNmh1CvpKam2rdXrlxJaWnpRROkC2VkZGAYBocOHeK6664D4NSpU/zhD38AoKSkhMTERAD8/PzYtGkTp0+fJj8/n2+//Za5c+fSrVs3h2MuXrzYniA1adKENWvW8Ouvv5KTk2M/7n/+8x/uv/9+vvvuu+qeukjNM0SkTrvnnnsMwACMnj17GufOnXNa7+zZs/btwsJCY/bs2UaPHj2Mxo0bG76+vkb37t2NWbNmGQUFBQ77hYSE2I+/f/9+Y8SIEYafn5/RqlUr4+677zZycnIMwzCM48ePG97e3gZgdO3a1eEYp0+fNvz8/AzAaNu2rT2W4uJiY+HChca1115rNG3a1PD29ja6du1q/OEPf7hoHHv37jVuu+02o1mzZkZoaKi9zvvvv2/07t3b8PHxMUJDQ42kpCTj9ddft+83Z84ch2Omp6cb99xzj9GhQwfDy8vLaNGihXHzzTcbn3/+uUO9N954w36MP/7xj8aiRYuMrl272v9uf/3rXyv8vY8cOWJMmzbNXs9qtRrdunWrdgwXc/DgQeOBBx4wQkJCDC8vL6NZs2ZG//79jRUrVhilpaWGYRhGRkaG/RwuXAYPHnzR459fNyMjw17+zjvv2MutVqthGIbx888/28uuvvpqo6Sk5KLHPnv2rNG6dWv7PgsWLKhQ55ZbbrF/f8cdd1T57yJS25QkidRhJSUl9uQDMFavXn3JfY4fP25cffXVlf5gXn311UZeXp69/vnJSYsWLSrUj42NtdcdNWqUvXz79u328rVr19rLExISDMMwjDNnzhiDBw+uNI5u3boZ//73v53G0apVK/t2SEiIYRiGsX79esNisVQ4TlBQkNMk6f333ze8vLyctm2xWIxly5bZ656fJDn7GwDG119/ba+/c+dOo3nz5k7r9e7du1oxVOabb74xmjZtWunf8a677jJKS0trJUn629/+ViFJOnfunOHr62sv79y5szFlyhRj9erVxo8//ug0/vOPf/41L/fuu+86tHOpxEvkSlGSJFKH5ebmOvzApKamXnKfRx55xCHBOXr0qHHs2DFjyJAh9vJHHnnEXv/85OT66683jhw5Yvzwww9GmzZt7OVZWVmGYRjGF198YS+bMmWK/Ri33nqr/Ye//IdywYIFDolTfn6+cerUKeO5556zl8+YMcNpHBEREUZaWppx+vRpY9euXUZpaanD908++aRx4sQJIyUlxWjZsmWFJOn06dP23ovQ0FBjx44dRlFRkbF//357Atm4cWPj+PHjhmE4JkkeHh7G2rVrjYKCAuOJJ56wl0+aNMkea0REhL38tttuM3744Qfj1KlTxnfffWe88MIL1YqhMt27d3f4O544ccJITU11SA7ffvtte/1x48bZyzdt2nTJf14Mw3mSdOjQIePaa6+1lw8ZMsRe/8knn6w0IYuMjDRSUlLsddetW+eQgDqTnp7ucIzc3NwqxS1S25QkidRhOTk5Dj8e33333SX36dChg73+P//5T3t5Wlqavbxjx4728vOTj/Pr33nnnfbyb775xjAMwygtLTW6dOliAEZAQIBRXFxs5OTkGJ6engZgDB061L5/TExMpT+k5UvPnj2dxrFlyxaHc/rhhx/s37Vq1crhluMf/vCHCklScnLyJdsGjHfeeccwDMck6fzbPbt377aX33zzzYZhGMa//vUve1mzZs2MkydPOr0OrsbgzMGDBys974ULF9q/u+++++zll5skOVuaNGli7Nixw2GflStXGlFRUU579/z8/IyjR48ahmEYb7311iWTpPP/2VSSJHWJBm6L1GGtWrXCz8/P/nnPnj2X3CcnJ8e+HRISYt8ODQ11Wud85w+4tVqt9u0zZ84AtqegJk6cCNimJNi4cSNvvvkm586dA2DSpEmXbON8eXl5TsvLn6JyVq9jx454eHjYP59/Xq60XVn7l/obZGdnO7TdtGlTp8e+nBicHeNi513Vtlzh6elJx44due+++9i5cydRUVEO348bN44dO3aQnZ3Nhg0bmDhxIl5eXgAUFhby8ccfA47/DP7yyy9OB5Gf//i/1WolICCgxs9HpDqUJInUYY0aNWLYsGH2z3/+858pKSlxWrc8UQkMDLSX/fTTT/btw4cP27fPr3O+8h85qPyx8PHjx9vrrVmzhjVr1tiPefvttztt45tvvsGw9Vw7LD///LPTNpo0aeLwuXXr1vbtn3/+mdLSUvvnjIyMCvuf3/bNN9/stO3S0lKHpK6qf4O2bdvatw8fPlzp/FSXE4OzYxw9etTh2lflelZH+dNtZ8+e5ciRI6xZs6bC02qFhYX27TZt2jB8+HBee+01xo0bZy/Pz88HICoqyuH6/c///E+FNl9//XX7dmxsLI0a6adJ6gb9kyhSx82ZM8feW7Fr1y5GjBhBeno6xcXF/Pvf/+aDDz7gxhtv5PvvvwdwSFT+8Ic/8PPPP5OVlWV/1PrCOq4q/1EEeP/99+2PbE+YMMEhwbjjjjvs21OmTCE1NdU+bcHGjRu56667SEpKqlKbXbp0sfec5Obm8qc//YmTJ0+ydetW/vKXv1SoHxMTY/9h/uyzz1iwYAH5+fkUFRXxww8/8Nxzz9G5c+dqnX+nTp3o1asXACdPnuSee+7hwIED/Oc//2HXrl32R91rIobOnTvbE5S8vDzmzJlDQUEB6enpLFy40F7vcq6nq86dO0dwcDD//d//zZdffskvv/zC2bNn2bVrF1u2bLHX69GjB2DrkXrqqafs5XPmzOHNN9/k9OnTHD9+nFmzZrFx40bAlqDOnj37ip2LyCVd+Tt8IuKqL7/80uGJL2dLWlqaYRi2wd7l44acLV26dHEYLHz+WKDzXWxsy2effeZwzPMHbJc7c+aMcf3111805vOfRqssjnKVPd12/hisxMREe/0PPvjAPmVBZUu588cknR/T+U+Mnf+EWFWfbnMlhsp8/fXXRpMmTSrdf+TIkfZpAC513Spz/vHOf7rNmbNnz15yDFP//v0rTFXx+9///qL7+Pr6GmvXrq1SvCJXinqSROqBG264gX379vHMM88QHR1N8+bN8fLyokOHDtxwww289NJLdOnSBbDdmtqxYwdPPvkk3bt3x9fXFx8fH7p160ZCQgI7duygVatWlxXPkCFDuOqqq+yfb7rpJofPAD4+PiQnJ7N48WL69++Pn58f3t7edOzYkUGDBjFv3jyH2zOXcscdd/Dee+/Ru3dv+ysznnnmGaZOnWqvc/55DRs2jNTUVO6//36Cg4Px8vLC39+fbt26cf/997Nu3bpqn39kZCS7du1i2rRpdO3aFR8fH5o0aUJ4eLi9l62mYhgwYABpaWmMHz+eoKAgvLy8aNq0KdHR0Sxbtoy//e1vl5wxuyZ5enqyevVqHnjgASIiImjTpg2enp5YrVZ69+5NYmIin332mcP4KYAXX3yRzZs3M3r0aIKCgvD29qZJkyZ069aNadOm8f333zN69Ogrdh4iVaHXkohIvXDy5Em+/fZbBg0aZL+tt3fvXm677TYOHz5Mo0aN2Lt3L1dffbXJkYqIu/A0OwARkarIz89nyJAheHl50aZNG86cOWMfHAy2sS5KkESkJilJEpF6oXnz5tx333188803ZGdnU1xcTPv27YmOjmby5MnExsaaHaKIuBndbhMRERFxQgO3RURERJxQkiQiIiLihJIkERERESc0cLuaSktL+fnnn2nWrNkVnaNEREREqs8wDE6ePEn79u0v+QocJUnV9PPPPxMUFGR2GCIiIlINR44coWPHjhetoySpmpo1awbY/sjnv6VdRERE6q7CwkKCgoLsv+MXoySpmspvsfn5+SlJEhERqWeqMlRGA7dFREREnFCSJCIiIuKEkiQRERERJzQmSUREpB4oKSnh7NmzZodR53l5eeHh4VEjx1KSJCIiUocZhkF2djYnTpwwO5R6o3nz5rRt2/ay5zFUkiQiIlKHlSdIbdq0oUmTJprA+CIMw+D06dPk5uYC0K5du8s6npIkERGROqqkpMSeIAUEBJgdTr3QuHFjAHJzc2nTps1l3XrTwG0REZE6qnwMUpMmTUyOpH4p/3td7hguJUkiIiJ1nG6xuaam/l5KkkREREScUJIkIiIi4oSSJBEREalx48ePx2KxYLFY8PLy4qqrrmLGjBmcOnUKgHfffZfo6Gj8/f1p1qwZPXr04LHHHnM4xn/+8x/mzJnD1VdfjY+PD61ateJ3v/sde/bsuSLnoKfb6qAjwH+ArmYHIiIichluueUW3njjDc6ePUtKSgoTJ07k1KlT3HnnnYwePZpnn32W22+/HYvFwt69e/niiy/s+xYVFTFkyBAyMzN54YUXiI6OJicnh6SkJKKjo/n888/p169frcavJKmOeQmYDowC3jI3FBERkcvi4+ND27ZtAbjnnnvYtGkTGzZswMfHh9/85jc8/vjj9rpdu3ZlxIgR9s+LFi3im2++IS0tjd69ewMQEhJi74F68MEH+f7772t1ULtut9Ux5TnxRqDIzEBERKROMoBTJixGDcTeuHFjzp49S9u2bdmzZw/ff/99pXXffPNNhg4dak+QyjVq1Ijf//737N27l3/+8581EFXllCTVMdcC7YCTwBeXqCsiIg3PaaCpCcvpy4z722+/5c033+Smm25i2rRpXHvttURERBAaGsro0aP5n//5H4qK/r974MCBA3Tr1s3pscrLDxw4cJlRXZySpDqmETCibHuDeWGIiIhctg8//JCmTZvi6+tL//79GTRoEIsXL8ZqtfLRRx/xr3/9i9mzZ9O0aVMee+wxrrvuOk6fvnQ6Zhi2fq3anj9KSVIddEfZ+n2gxMxARESkzmkC/GrCUp05v2+44QbS09PZv38/Z86cYf369bRp08b+fadOnZg4cSJ/+ctf+O6779i7dy/r1q0DbGOU9u7d6/S4P/zwAwBdunSpRlRVp4HbddD1gD+QC3wD/MbUaEREpC6xAFazg6giq9VK586dq1Q3NDSUJk2a2KcIGD16NLNmzeKf//ynw7ik0tJSFi5cSPfu3SuMV6ppSpLqIC/gt8D/Au+hJElERNxLYmIip0+f5tZbbyUkJIQTJ07w8ssvc/bsWYYOHQrA73//e95//32GDRvmMAXAs88+y759+/j88891u62hKr/ltoGaeaJARESkrhg8eDCHDh3i/vvvJzw8nLi4OLKzs/nss8+4+uqrAfD19eXLL79k3LhxPPnkk3Tu3JlbbrkFDw8Ptm/fXutzJAFYjPLRT+KSwsJC/P39KSgowM/Pr8aPfwpoBZwB/gn0qvEWRESkrjtz5gwZGRmEhYXh6+trdjj1xsX+bq78fpvek7R06VL7SURGRpKSklJp3a1btxITE0NAQACNGzcmPDychQsXOtRZuXKlfRr085czZ87Y6yQmJlb4vnyyq7rCCsSWbb9nZiAiIiINlKljktatW8f06dNZunQpMTExvPrqq8TFxbF3716Cg4Mr1LdarUydOpVevXphtVrZunUrkyZNwmq18vDDD9vr+fn5sX//fod9L8wke/Toweeff27/7OHhUcNnd/lGAB9gS5LmmBuKiIhIg2NqkvTiiy/y4IMPMnHiRMA2Bfmnn37KsmXLSEpKqlD/mmuu4ZprrrF/Dg0NZf369aSkpDgkSVXpGfL09KxzvUcXGoatq++fQAYQZm44IiIiDYppt9uKi4tJTU0lNjbWoTw2NpZt27ZV6RhpaWls27aNwYMHO5T/+uuvhISE0LFjR37729+SlpZWYd+DBw/Svn17wsLCGD16NIcOHbpoW0VFRRQWFjosta0VMKhse0OttyYiIiLnMy1JysvLo6SkhMDAQIfywMBAsrOzL7pvx44d8fHxISoqiilTpth7ogDCw8NZuXIlH3zwAWvXrsXX15eYmBgOHjxorxMdHc3q1av59NNPee2118jOzmbAgAHk5+dX2mZSUhL+/v72JSgoqJpn7pryp9w0LklEpOHSM1auqam/l+kDty+c48AwjEvOe5CSksLOnTtZvnw5ixYtYu3atfbv+vXrx3333Ufv3r0ZOHAgb7/9Nl27dmXx4sX2OnFxcdx5551EREQwZMgQPvroIwBWrVpVaZsJCQkUFBTYlyNHjlTndF02vGz9NbbJJUVEpOHw8vICqNKrOuT/lf+9yv9+1WXamKRWrVrh4eFRodcoNze3Qu/ShcLCbKNzIiIiyMnJITExkTFjxjit26hRI6699lqHnqQLWa1WIiIiLlrHx8cHHx+fi8ZVG0KAvsB3wN+BB694BCIiYhYPDw+aN29Obq7tf5ObNGlS6xMo1meGYXD69Glyc3Np3rz5ZT+UZVqS5O3tTWRkJMnJydxxxx328uTkZIYPH36RPR0ZhuHw1mBn36enpxMREVFpnaKiIvbt28fAgQOr3O6VdAe2JOk9lCSJiDQ05Q8ZlSdKcmnNmzevkYezTH26LT4+nrFjxxIVFUX//v1ZsWIFmZmZTJ48GbDd4jp27BirV68GYMmSJQQHBxMeHg7Y5k1asGAB06ZNsx/z6aefpl+/fnTp0oXCwkJefvll0tPTWbJkib3OjBkzGDZsGMHBweTm5jJv3jwKCwsZN27cFTz7qhsBPAUkAyeBZqZGIyIiV5LFYqFdu3a0adOGs2fPmh1Onefl5VVj0/qYmiSNGjWK/Px85s6dS1ZWFj179mTjxo2EhIQAkJWVRWZmpr1+aWkpCQkJZGRk4OnpSadOnZg/fz6TJk2y1zlx4gQPP/ww2dnZ+Pv7c80117Blyxauu+46e52jR48yZswY8vLyaN26Nf369WP79u32duuaHkBn4F/AJ8Bd5oYjIiIm8PDwqJNz+rkzvZakmmr7tSQXegL4MzAGeLPWWxMREXFP9eq1JFI15aO2PgKKzQxERESkgVCSVE9EA22BQuBLk2MRERFpCJQk1RON+P85kzaYGIeIiEhDoSSpHim/5fY+UGpmICIiIg2AkqR65AbAD8gGtpsci4iIiLtTklSPeAO3lW3rXW4iIiK1S0lSPXP+C281d4OIiEjtUZJUz8QBPsCPwB6TYxEREXFnSpLqmabA0LJt3XITERGpPUqS6qERZWslSSIiIrVHSVI9dDu2C5cG/GRyLCIiIu5KSVI91Br4Tdn2BhPjEBERcWdKkuqp859yExERkZqnJKmeGlG2TgGOmxiHiIiIu1KSVE+FAn2wvZ7kQ1MjERERcU9Kkuox3XITERGpPUqS6rERZevPgF9NjENERMQdKUmqxyKAq4AiYIvJsYiIiLgbJUn1mAXbuCSwvaZEREREao6SpHoutGx92MQYRERE3JGSpHourGydYWoUIiIi7kdJUj0XWrY+bGIMIiIi7khJUj1X3pN02MwgRERE3JCSpHoupGz9C1BgZiAiIiJuRklSPdcUaFW2fdjEOERERNyNkiQ3oMHbIiIiNU9JkhsILVsfNjEGERERd6MkyQ2oJ0lERKTmKUlyA6Fl68MmxiAiIuJulCS5AfUkiYiI1DwlSW4gtGx9GDDMC0NERMStKElyA+VzJZ3ENl+SiIiIXD4lSW6gMdC2bFu33ERERGqG6UnS0qVLCQsLw9fXl8jISFJSUiqtu3XrVmJiYggICKBx48aEh4ezcOFChzorV67EYrFUWM6cOVPtduuD0LL1YRNjEBERcSeeZja+bt06pk+fztKlS4mJieHVV18lLi6OvXv3EhwcXKG+1Wpl6tSp9OrVC6vVytatW5k0aRJWq5WHH37YXs/Pz4/9+/c77Ovr61vtduuDMGA76kkSERGpKRbDMEwb6xsdHU3fvn1ZtmyZvaxbt26MGDGCpKSkKh1j5MiRWK1W1qxZA9h6kqZPn86JEydqtd3CwkL8/f0pKCjAz8+vSvvUpieBJGAK8IrJsYiIiNRVrvx+m3a7rbi4mNTUVGJjYx3KY2Nj2bZtW5WOkZaWxrZt2xg8eLBD+a+//kpISAgdO3bkt7/9LWlpaZfdblFREYWFhQ5LXaJpAERERGqWaUlSXl4eJSUlBAYGOpQHBgaSnZ190X07duyIj48PUVFRTJkyhYkTJ9q/Cw8PZ+XKlXzwwQesXbsWX19fYmJiOHjw4GW1m5SUhL+/v30JCgpy9ZRrVWjZ+rCJMYiIiLgTU8ckAVgsFofPhmFUKLtQSkoKv/76K9u3b2fmzJl07tyZMWPGANCvXz/69etnrxsTE0Pfvn1ZvHgxL7/8crXbTUhIID4+3v65sLCwTiVK5T1Jh7HNlXTxv6CIiIhcimlJUqtWrfDw8KjQe5Obm1uhl+dCYWG2lCAiIoKcnBwSExPtSdKFGjVqxLXXXmvvSapuuz4+Pvj4+FzyvMwShC0xOg0cB9qYG46IiEi9Z9rtNm9vbyIjI0lOTnYoT05OZsCAAVU+jmEYFBUVXfT79PR02rVrV6Pt1jU+QIey7cMmxiEiIuIuTL3dFh8fz9ixY4mKiqJ///6sWLGCzMxMJk+eDNhucR07dozVq1cDsGTJEoKDgwkPDwds8yYtWLCAadOm2Y/59NNP069fP7p06UJhYSEvv/wy6enpLFmypMrt1lehwFFsg7evMzcUERGRes/UJGnUqFHk5+czd+5csrKy6NmzJxs3biQkxPaijaysLDIzM+31S0tLSUhIICMjA09PTzp16sT8+fOZNGmSvc6JEyd4+OGHyc7Oxt/fn2uuuYYtW7Zw3XXXVbnd+ioM2Ip6kkRERGqCqfMk1Wd1bZ4kgD8CzwCTgOUmxyIiIlIX1Yt5kqTmhZatD5sYg4iIiLtQkuRGNKGkiIhIzVGS5EZCy9Y/AaUmxiEiIuIOlCS5kSDAAygCLj5nuYiIiFyKkiQ34gl0LNs+bGIcIiIi7kBJkpvRuCQREZGaoSTJzYSWrQ+bGIOIiIg7UJLkZs5/0a2IiIhUn5IkNxNattbtNhERkcujJMnNqCdJRESkZihJcjOhZetMoMTEOEREROo7JUlupj3gBZwFfjY5FhERkfpMSZKb8QCCy7Y1LklERKT6lCS5odCy9WETYxAREanvlCS5IU0oKSIicvmUJLmh0LL1YRNjEBERqe+UJLkhTQMgIiJy+ZQkuaHQsrVut4mIiFSfkiQ3VN6TdBQ4Z2YgIiIi9ZiSJDcUCPhgm0zyiMmxiIiI1FdKktxQIyCkbPuwiXGIiIjUZ0qS3JSmARAREbk8SpLcVGjZ+rCJMYiIiNRnSpLclHqSRERELo+SJDcVWrY+bGIMIiIi9ZmSJDelCSVFREQuj5IkNxVatj4GFJkYh4iISH2lJMlNtQaaAAaaK0lERKQ6lCS5KQt6PYmIiMjlUJLkxjQuSUREpPqUJLmx0LK1epJERERcpyTJjYWWrQ+bGIOIiEh9pSTJjWlCSRERkeozPUlaunQpYWFh+Pr6EhkZSUpKSqV1t27dSkxMDAEBATRu3Jjw8HAWLlxYaf233noLi8XCiBEjHMoTExOxWCwOS9u2bWvqlOqM0LL1YRNjEBERqa88zWx83bp1TJ8+naVLlxITE8Orr75KXFwce/fuJTg4uEJ9q9XK1KlT6dWrF1arla1btzJp0iSsVisPP/ywQ92ffvqJGTNmMHDgQKdt9+jRg88//9z+2cPDo2ZPrg4o70nKBv4DNDYxFhERkfrGYhiGYVbj0dHR9O3bl2XLltnLunXrxogRI0hKSqrSMUaOHInVamXNmjX2spKSEgYPHsyECRNISUnhxIkTbNiwwf59YmIiGzZsID09vdqxFxYW4u/vT0FBAX5+ftU+Tm0yAH/gJLAPCDc3HBEREdO58vtt2u224uJiUlNTiY2NdSiPjY1l27ZtVTpGWloa27ZtY/DgwQ7lc+fOpXXr1jz44IOV7nvw4EHat29PWFgYo0eP5tChQxdtq6ioiMLCQoelrrOgaQBERESqy7QkKS8vj5KSEgIDAx3KAwMDyc7Ovui+HTt2xMfHh6ioKKZMmcLEiRPt33399de8/vrrvPbaa5XuHx0dzerVq/n000957bXXyM7OZsCAAeTn51e6T1JSEv7+/vYlKCioimdqrtCytQZvi4iIuMb0gdsWi8Xhs2EYFcoulJKSws6dO1m+fDmLFi1i7dq1AJw8eZL77ruP1157jVatWlW6f1xcHHfeeScREREMGTKEjz76CIBVq1ZVuk9CQgIFBQX25ciR+vGyD/UkiYiIVI9pA7dbtWqFh4dHhV6j3NzcCr1LFwoLs/30R0REkJOTQ2JiImPGjOHHH3/k8OHDDBs2zF63tLQUAE9PT/bv30+nTp0qHM9qtRIREcHBgwcrbdPHxwcfH58qn19dEVq2Vk+SiIiIa0zrSfL29iYyMpLk5GSH8uTkZAYMGFDl4xiGQVGR7T334eHh7N69m/T0dPty++23c8MNN5Cenl7pLbKioiL27dtHu3btqn9CdVRo2fqwiTGIiIjUR6ZOARAfH8/YsWOJioqif//+rFixgszMTCZPngzYbnEdO3aM1atXA7BkyRKCg4MJD7c9p7V161YWLFjAtGnTAPD19aVnz54ObTRv3hzAoXzGjBkMGzaM4OBgcnNzmTdvHoWFhYwbN662T/mK04SSIiIi1WNqkjRq1Cjy8/OZO3cuWVlZ9OzZk40bNxISEgJAVlYWmZmZ9vqlpaUkJCSQkZGBp6cnnTp1Yv78+UyaNMmldo8ePcqYMWPIy8ujdevW9OvXj+3bt9vbdSehZes84FegqXmhiIiI1CumzpNUn9WHeZLKtQR+Ab4Hepgci4iIiJnqxTxJcuWElq11y01ERKTqlCQ1AJoGQERExHVKkhqA0LK1epJERESqTklSA6CeJBEREdcpSWoAQsvW6kkSERGpOiVJDYB6kkRERFynJKkBKJ/96RegwMxARERE6hElSQ1AU6D8db+HTYxDRESkPlGS1EDolpuIiIhrlCQ1EKFlaw3eFhERqRolSQ2EepJERERcoySpgQgtW6snSUREpGqUJDUQ6kkSERFxjZKkBiK0bJ0BGCbGISIiUl+4nCR999137N692/75/fffZ8SIETz55JMUFxfXaHBSc8rnSjqJbb4kERERuTiXk6RJkyZx4MABAA4dOsTo0aNp0qQJf/vb33jiiSdqPECpGY2BtmXbGpckIiJyaS4nSQcOHKBPnz4A/O1vf2PQoEG8+eabrFy5knfffbem45MapHFJIiIiVedykmQYBqWlpQB8/vnn3HrrrQAEBQWRl5dXs9FJjQotWx82MQYREZH6wuUkKSoqinnz5rFmzRo2b97MbbfdBkBGRgaBgYE1HqDUnNCytW63iYiIXJqnqzssWrSIe++9lw0bNjBr1iw6d+4MwDvvvMOAAQNqPECpOeW329KBLbXURjugM2CppeOLiIhcKRbDMGrkifAzZ87g4eGBl5dXTRyuzissLMTf35+CggL8/PzMDqdKkoHYK9BOANC/bBkAXAtYr0C7IiIil+LK77fLPUkAJ06c4J133uHHH3/k8ccfp2XLluzdu5fAwEA6dOhQraCl9g0Efgv8q5aOb2Ab75QPfFi2AHgAvbAlTOXJUxjqbRIRkbrN5SRp165d3HTTTTRv3pzDhw/z0EMP0bJlS9577z1++uknVq9eXRtxSg3wBf5ey20UA2nAN2XLNuBoWVkasKSsXiC2pOleYDjVzNZFRERqkcsDt+Pj45kwYQIHDx7E19fXXh4XF8eWLbU10kXqC28gGpgOrAOOlC1vl5VFA15ADvAe8DtsvUp/AnKveLQiIiKVczlJ2rFjB5MmTapQ3qFDB7Kzs2skKHEvHYG7gIXAdqAQ+Bp4EmiDradpNhAE3FdWR69OERERs7mcJPn6+lJYWFihfP/+/bRu3bpGghL35ovtVtufgEzgr0A/bLfq/hfbmKVrgZXAf8wJUURExPUkafjw4cydO5ezZ88CYLFYyMzMZObMmdx55501HqC4Nx9s45K+AXYA48vKUoEJ2HqX/oAmwBQRkSvP5SkACgsLufXWW9mzZw8nT56kffv2ZGdn079/fzZu3IjV2jAe9q6PUwDUF3nA68BSbD1NYHsS7hps45mqygr4nbf4X/D5/CUEaFEDsYuISN3myu93tedJ+vLLL/nuu+8oLS2lb9++DBkypFrB1ldKkmpfCbZpBF4BPq/lthoD+7H1XImIiPu6IklSQ6ck6co6APzgQn0DOIVtkPillkxsY59WAffXXMgiIlIH1epkknPnzr3o93/84x9dPaTIJXUtW2rDo8DL2F7XoiRJRETKuZwkvffeew6fz549S0ZGBp6ennTq1ElJktQ7fcrWaWYGISIidY7LSVJaWsWfksLCQsaPH88dd9xRI0GJXEnXlK3Tsd2m0+tSREQEqjEFgDN+fn7MnTuXp556yuV9ly5dSlhYGL6+vkRGRpKSklJp3a1btxITE0NAQACNGzcmPDychQsXVlr/rbfewmKxMGLEiMtqV9xbd2xPzZ0AfjI3FBERqUNqJEkC20tvCwoKXNpn3bp1TJ8+nVmzZpGWlsbAgQOJi4sjMzPTaX2r1crUqVPZsmUL+/btY/bs2cyePZsVK1ZUqPvTTz8xY8YMBg4ceNntinvzBnqUbeuWm4iIlHP56baXX37Z4bNhGGRlZbFmzRoGDRrE2rVrq3ys6Oho+vbty7Jly+xl3bp1Y8SIESQlJVXpGCNHjsRqtbJmzRp7WUlJCYMHD2bChAmkpKRw4sQJNmzYUKPt6uk29/IA8AbwFHDxRxNERKQ+q9Wn2y68vdWoUSNat27NuHHjSEhIqPJxiouLSU1NZebMmQ7lsbGxbNu2rUrHSEtLY9u2bcybN8+hfO7cubRu3ZoHH3ywwm206rZbVFREUVGR/bOzV7NI/XUNtiQp3eQ4RESk7nA5ScrIyKiRhvPy8igpKSEwMNChPDAw8JIvyu3YsSPHjx/n3LlzJCYmMnHiRPt3X3/9Na+//jrp6ek12m5SUhJPP/30Jc5K6qs+ZWvdbhMRkXI1NiapuiwWx2eJDMOoUHahlJQUdu7cyfLly1m0aJH9Ft/Jkye57777eO2112jVqlWNtpuQkEBBQYF9OXLkyEWPL/VL77L1UWyvRREREalST9LIkSOrfMD169dXqV6rVq3w8PCo0HuTm5tboZfnQmFhYQBERESQk5NDYmIiY8aM4ccff+Tw4cMMGzbMXre0tBQAT09P9u/fT1BQULXa9fHxwcfHp0rnJvWPH9AZ+Be2W24N6yU7IiLiTJV6kvz9/au8VJW3tzeRkZEkJyc7lCcnJzNgwIAqH8cwDPtYofDwcHbv3k16erp9uf3227nhhhtIT08nKCioxtoV99OnbK1bbiIiAlXsSXrjjTdqpfH4+HjGjh1LVFQU/fv3Z8WKFWRmZjJ58mTAdovr2LFjrF69GoAlS5YQHBxMeHg4YJs3acGCBUybNg0AX19fevbs6dBG8+bNARzKL9WuNEzXAO+gJElERGxcHrhdk0aNGkV+fj5z584lKyuLnj17snHjRkJCQgDIyspymLuotLSUhIQEh9egzJ8/n0mTJtVou9IwnT/ztoiIiMvzJAG88847vP3222RmZlJcXOzw3XfffVdjwdVlmifJ/WQD7bDdgz4JNDE3HBERqQWu/H67/HTbyy+/zIQJE2jTpg1paWlcd911BAQEcOjQIeLi4qodtIjZ2gKBQCmwy+RYRETEfC4nSUuXLmXFihW88soreHt788QTT5CcnMx///d/u/xaEpG6RrfcRESknMtJUmZmpv0psMaNG3Py5EkAxo4d69IrSUTqovIkSYO3RUTE5SSpbdu25OfnAxASEsL27dsB20zc1RjeJFKn9ClbK0kSERGXk6Qbb7yRv//97wA8+OCD/P73v2fo0KGMGjWKO+64o8YDFLmSynuSdgPnzAxERERM5/LTbaWlpZSWluLpaZs94O2332br1q107tyZyZMn4+3tXSuB1jV6us09lQL+wK/A90APc8MREZEa5srvd7WmABAlSe7sN8DXwBrgPpNjERGRmlWrUwCEhYXx1FNP8cMPP1Q7QJG6TE+4iYgIVCNJmjZtGp988gndu3cnMjKSRYsWkZWVVRuxiZhCT7iJiAhUI0mKj49nx44d/PDDD/z2t79l2bJlBAcHExsba3/Hmkh91qdsnQboXrSISMNVI2OStm/fzn/913+xa9cuSkpKaiKuOk9jktxXEdAU29NthwG90U9ExH248vt9WS+4/fbbb3nzzTdZt24dBQUF/O53v7ucw4nUCT7Ynmr7J7ZxSUqSREQaJpdvtx04cIA5c+bQpUsXYmJi2Lt3L/PnzycnJ4d169bVRowiV1yfsrXGJYmINFwu9ySFh4cTFRXFlClTGD16NG3btq2NuERMdQ2wCiVJIiINmctJ0g8//EDXrl1rIxaROkPTAIiIiMu325QgSUPQu2ydCeSbGYiIiJjG5SRJpCHwB64q2043MQ4RETGPkiSRSuiWm4hIw6YkSaQSfcrWGrwtItIwXXaSVFJSQnp6Or/88ktNxCNSZ+j1JCIiDZvLSdL06dN5/fXXAVuCNHjwYPr27UtQUBBfffVVTccnYpryJOkH4D9mBiIiIqZwOUl655136N3b9uzP3//+dzIyMvjhhx+YPn06s2bNqvEARczSDmgNlAK7TY5FRESuPJeTpLy8PPsEkhs3buSuu+6ia9euPPjgg+zerZ8ScR8WdMtNRKQhczlJCgwMZO/evZSUlPDJJ58wZMgQAE6fPo2Hh0eNByhiJj3hJiLScLk84/aECRO4++67adeuHRaLhaFDhwLwj3/8g/Dw8BoPUMRMfcrW6kkSEWl4XE6SEhMT6dmzJ0eOHOGuu+7Cx8cHAA8PD2bOnFnjAYqYqbwnaRdQAqivVESk4bAYhmFc7kFOnDhB8+bNayCc+qOwsBB/f38KCgrw8/MzOxypJSXYZt8+BewFupkbjoiIXCZXfr9dHpP03HPPsW7dOvvnu+++m4CAADp27MiuXbtcj1akDvMAepVt65abiEjD4nKS9OqrrxIUFARAcnIyycnJfPzxx9xyyy3MmDGjxgMUMZuecBMRaZhcHpOUlZVlT5I+/PBD7r77bmJjYwkNDSU6OrrGAxQxm55wExFpmFzuSWrRogVHjhwBcJgCwDAMSkpKajY6kTqgT9k6DbjsAXwiIlJvuNyTNHLkSO655x66dOlCfn4+cXFxAKSnp9O5c+caD1DEbD2xjU3KB44CQeaGIyIiV4jLSdLChQsJDQ3lyJEjPP/88zRt2hSw3YZ75JFHajxAEbP5At2xvZokHSVJIiINhcu327y8vJgxYwYvvfQS11xzjb18+vTpTJw40eUAli5dSlhYGL6+vkRGRpKSklJp3a1btxITE0NAQACNGzcmPDychQsXOtRZv349UVFRNG/eHKvVSp8+fVizZo1DncTERCwWi8NS/qoVEWf6lK01eFtEpOFwOUkCWLNmDb/5zW9o3749P/30EwCLFi3i/fffd+k469ats78YNy0tjYEDBxIXF0dmZqbT+larlalTp7Jlyxb27dvH7NmzmT17NitWrLDXadmyJbNmzeKbb75h165dTJgwgQkTJvDpp586HKtHjx5kZWXZF713Ti5GT7iJiDQ8LidJy5YtIz4+nri4OE6cOGEfrN28eXMWLVrk0rFefPFFHnzwQSZOnEi3bt1YtGgRQUFBLFu2zGn9a665hjFjxtCjRw9CQ0O57777uPnmmx16n66//nruuOMOunXrRqdOnXj00Ufp1asXW7dudTiWp6cnbdu2tS+tW7d27Q8hDYqecBMRaXhcTpIWL17Ma6+9xqxZsxxeaBsVFeVSb0xxcTGpqanExsY6lMfGxrJt27YqHSMtLY1t27YxePBgp98bhsEXX3zB/v37GTRokMN3Bw8epH379oSFhTF69GgOHTpU5dil4eldtj4M/GJiHCIicuW4PHA7IyPDYSxSOR8fH06dOlXl4+Tl5VFSUkJgYKBDeWBgINnZ2Rfdt2PHjhw/fpxz586RmJhYYSxUQUEBHTp0oKioCA8PD5YuXWp/ES9AdHQ0q1evpmvXruTk5DBv3jwGDBjAnj17CAgIcNpmUVERRUVF9s+FhYVVPlep/1oAodiSpHTgBhNjERGRK8PlJCksLIz09HRCQkIcyj/++GO6d+/ucgAWi8Xhs2EYFcoulJKSwq+//sr27duZOXMmnTt3ZsyYMfbvmzVrRnp6Or/++itffPEF8fHxXHXVVVx//fUA9mkLACIiIujfvz+dOnVi1apVxMfHO20zKSmJp59+2uXzE/dxDUqSREQaEpeTpMcff5wpU6Zw5swZDMPg22+/Ze3atSQlJfGXv/ylysdp1aoVHh4eFXqNcnNzK/QuXSgsLAywJTg5OTkkJiY6JEmNGjWyz9nUp08f9u3bR1JSkj1JupDVaiUiIoKDBw9W2mZCQoJDAlVYWGifeVwahj7Ae2jwtohIQ+FykjRhwgTOnTvHE088wenTp7nnnnvo0KEDL730EqNHj67ycby9vYmMjCQ5OZk77rjDXp6cnMzw4cOrfBzDMBxug1WnTlFREfv27WPgwIGV1vHx8cHHx6fKcYn70RNuIiINi8tJEsBDDz3EQw89RF5eHqWlpbRp06ZajcfHxzN27FiioqLo378/K1asIDMzk8mTJwO23ptjx46xevVqAJYsWUJwcDDh4eGAbd6kBQsWMG3aNPsxk5KSiIqKolOnThQXF7Nx40ZWr17t8MTcjBkzGDZsGMHBweTm5jJv3jwKCwsZN25ctc5DGobyJGkfcAbbJJMiIuK+qpUklWvVqtVlNT5q1Cjy8/OZO3cuWVlZ9OzZk40bN9rHO2VlZTnMmVRaWkpCQgIZGRl4enrSqVMn5s+fz6RJk+x1Tp06xSOPPMLRo0ftE07+9a9/ZdSoUfY6R48eZcyYMeTl5dG6dWv69evH9u3bK4yzEjlfByAA2+tJvgeizA1HRERqmcUwDJfe2ZmTk8OMGTP44osvyM3N5cLdG8pLbgsLC/H396egoAA/Pz+zw5ErZCjwObACeMjkWERExHWu/H673JM0fvx4MjMzeeqpp2jXrt0ln0QTcSfXYEuS3sc2LUBVBADXA/o3RUSkfnE5Sdq6dSspKSn06dOnFsIRqdvKxyV9VLZU1V+Be2s+HBERqUUuJ0lBQUEVbrGJNBS3A6OBY1Ws/wu28Utzy/bzuHh1ERGpQ1xOkhYtWsTMmTN59dVXCQ0NrYWQROouK7DWhfonsc3UfQB4Gxhz0doiIlKXuDxwu0WLFpw+fZpz587RpEkTvLy8HL7/97//XaMB1lUauC1VNQ94CugB7KIaL0wUEZEaU6sDtxcuXKjB2iIumAYsAPZgm7H7TnPDERGRKnK5J0ls1JMkrpiDbVxSb2wzdut/M0REzOHK77fLPf8eHh7k5uZWKM/Pz8fDQ8NSRZx5FGgK/BP4u8mxiIhI1bicJFXW8VRUVIS3t/dlByTijloCU8u2nwHUfSsiUvdVeUzSyy+/DIDFYuEvf/kLTZs2tX9XUlLCli1b7O9UE5GK4oGXgZ3AJ0CcueGIiMglVDlJWrhwIWDrSVq+fLnDrTVvb29CQ0NZvnx5zUco4iZaA/8FvICtN+kWNDZJRKQuq3KSlJGRAcANN9zA+vXradGiqi9lEJFyM4AlwDfAl8BN5oYjIiIX4fKYpE2bNilBEqmmtvz/i3HnmhmIiIhcUpV6kuLj43nmmWewWq3Ex8dftO6LL75YI4GJuKsngFeBLWXLIHPDERGRSlQpSUpLS+Ps2bP27cpokkmRS+sIPAAsxzY2KdnccEREpBJVnkzy0KFDhIWFKREqo8kk5XL8BHQGzgHbgP7mhiMi0mDUymSSXbp04fjx4/bPo0aNIicnp/pRijRgIcC4su1nzAxEREQqVeUk6cIOp40bN3Lq1KkaD0ikoUgAPICPsc2dJCIidYteSC5ikk7APWXb88wMREREnKpykmSxWCqMR9L4JJHL8yS2CSXfx/ZeNxERqTuqPJmkYRiMHz8eHx8fAM6cOcPkyZOxWq0O9davX1+zEYq4sXBgFPAWtt6kv5kbjoiInKfKSdK4ceMcPt933301HoxIQzQLW5L0LrAH6GFuOCIiUqbKUwCII00BIDXpTmA9MAZ40+RYRETcWa1MASAitWd22XodcMDMQERExK7Kt9tEpPZcAwwD/g4Mx/bkW20YgG2wuIiIXJqSJJE64ingQ+CHsqU2fAQMBmJq6fgiIu5ESZJIHXEtsBk4WEvHX48tSZqPrcdKREQuTkmSSB0ysGypDb8BNmLrrdoNRNRSOyIi7kIDt0UaiK7YnqIDeN7MQERE6gklSSINyMyy9Vogw8xARETqASVJIg1IJDAUKAFeMDkWEZG6TkmSSANT3pv0OpBrZiAiInWckiSRBuYGbE/SnQFeNjkWEZG6zPQkaenSpYSFheHr60tkZCQpKSmV1t26dSsxMTEEBATQuHFjwsPDWbhwoUOd9evXExUVRfPmzbFarfTp04c1a9ZcVrsi7sTC//cmvQIUmhiLiEhdZmqStG7dOqZPn86sWbNIS0tj4MCBxMXFkZmZ6bS+1Wpl6tSpbNmyhX379jF79mxmz57NihUr7HVatmzJrFmz+Oabb9i1axcTJkxgwoQJfPrpp9VuV8TdjACuBgqAV80NRUSkzjL1BbfR0dH07duXZcuW2cu6devGiBEjSEpKqtIxRo4cidVqddpbVK5v377cdtttPPPMMzXWrl5wK/XdG8ADQFtsT7r5mhuOiMgVUS9ecFtcXExqaiqxsbEO5bGxsWzbtq1Kx0hLS2Pbtm0MHjzY6feGYfDFF1+wf/9+Bg0aVGPtiriDe4GOQDZQ+f9iiIg0XKbNuJ2Xl0dJSQmBgYEO5YGBgWRnZ190344dO3L8+HHOnTtHYmIiEydOdPi+oKCADh06UFRUhIeHB0uXLmXo0KGX1W5RURFFRUX2z4WFGskh9Zs38Bjwe2yTSz4AeJgakYhI3WL6wG2LxeLw2TCMCmUXSklJYefOnSxfvpxFixaxdu1ah++bNWtGeno6O3bs4E9/+hPx8fF89dVXl9VuUlIS/v7+9iUoKKgKZydSt00EWgL/At41ORYRkbrGtJ6kVq1a4eHhUaH3Jjc3t0Ivz4XCwsIAiIiIICcnh8TERMaMGWP/vlGjRnTu3BmAPn36sG/fPpKSkrj++uur3W5CQgLx8fH2z4WFhUqUpN5rCkwDnsb24tu7sD39JiIiJvYkeXt7ExkZSXJyskN5cnIyAwYMqPJxDMNwuA12qTrVbdfHxwc/Pz+HRcQdTAOaAGnAZybHIiJSl5jWkwQQHx/P2LFjiYqKon///qxYsYLMzEwmT54M2Hpvjh07xurVqwFYsmQJwcHBhIeHA7Z5kxYsWMC0adPsx0xKSiIqKopOnTpRXFzMxo0bWb16tcOTbJdqV6QhCQAeBhZh60262dRoRETqDlOTpFGjRpGfn8/cuXPJysqiZ8+ebNy4kZCQEACysrIc5i4qLS0lISGBjIwMPD096dSpE/Pnz2fSpEn2OqdOneKRRx7h6NGj9gkn//rXvzJq1KgqtyvS0MRjm1jyK2A70M/UaERE6gZT50mqzzRPkribCcBKbBNNvmdqJCIitadezJMkInXLE9gGbW8A9pobiohInaAkSUQA6IatFwls8yaJiDR0SpJExO4PZev/BfQmQxFp6JQkiYhdNHADcA540eRYRETMpiRJRBwklK1fA/LMDERExGRKkkTEwRCgL3AaWGJyLCIiZlKSJCIOLNhefAvwP0CpibGIiJhJSZKIVHAH4I9t8PaXJsciImIWJUkiUkFjoPyV0StNjENExExKkkTEqQll63eBAjMDERExiZIkEXHqWqA7cAZYZ3IsIiJmUJIkIk5ZgPFl22+YGIeIiFmUJIlIpcYCHsB24AeTYxERudKUJIlIpdoCcWXbK02MQ0TEDEqSROSiygdwr8b2uhIRkYZCSZKIXNRvgQAgC/jM5FhERK4kJUkiclHewL1l2xrALSINiZIkEbmk8ltuHwD5ZgYiInIFKUkSkUvqU7YUA2tNjURE5MpRkiQiVVLem6RbbiLSUChJEpEquQfwAr4Ddpkci4jIlaAkSUSqpBUwrGx7pYlxiIhcKUqSRKTKym+5/RU4a2YgIiJXgJIkEamyW7DNwn0c+MjkWEREapuSJBGpMk9s73MDDeAWEfenJElEXFJ+y+0jIMfMQEREapmSJBFxSTcgGigB/tfkWEREapOSJBFx2fiy9RuAYWIcIiK1SUmSiLhsNOALfA+kmhyLiEhtUZIkIi5rDtxRtr3SvDBERGqVkiQRqZbyAdxvAmfMDEREpJYoSRKRarkRCAJ+AT4wORYRkdqgJElEqsUDuL9sW3MmiYg7UpIkItU2vmz9GXDMxDhERGqD6UnS0qVLCQsLw9fXl8jISFJSUiqtu3XrVmJiYggICKBx48aEh4ezcOFChzqvvfYaAwcOpEWLFrRo0YIhQ4bw7bffOtRJTEzEYrE4LG3btq2V8xNxZ52BgUApsMbkWEREapqnmY2vW7eO6dOns3TpUmJiYnj11VeJi4tj7969BAcHV6hvtVqZOnUqvXr1wmq1snXrViZNmoTVauXhhx8G4KuvvmLMmDEMGDAAX19fnn/+eWJjY9mzZw8dOnSwH6tHjx58/vnn9s8eHh61f8IibmgCkAIsA06ZHEt91we40+wgRMTOYhiGaXPBRUdH07dvX5YtW2Yv69atGyNGjCApKalKxxg5ciRWq5U1a5z/f2xJSQktWrTglVde4f77bSMoEhMT2bBhA+np6dWOvbCwEH9/fwoKCvDz86v2cUTqu1+xvfRWCVLNSAX6mh2EiBtz5ffbtJ6k4uJiUlNTmTlzpkN5bGws27Ztq9Ix0tLS2LZtG/Pmzau0zunTpzl79iwtW7Z0KD948CDt27fHx8eH6Ohonn32Wa666qpKj1NUVERRUZH9c2FhYZViFHF3TYH1wN/NDqSe2w7sBJ4D1pkci4jYmJYk5eXlUVJSQmBgoEN5YGAg2dnZF923Y8eOHD9+nHPnzpGYmMjEiRMrrTtz5kw6dOjAkCFD7GXR0dGsXr2arl27kpOTw7x58xgwYAB79uwhICDA6XGSkpJ4+umnXThDkYYjtmyR6tsN9ALeAQ4CXcwNR0SoAwO3LRaLw2fDMCqUXSglJYWdO3eyfPlyFi1axNq1a53We/7551m7di3r16/H19fXXh4XF8edd95JREQEQ4YM4aOPPgJg1apVlbaZkJBAQUGBfTly5EhVT1FE5JIigNuwDYJfYHIsImJjWk9Sq1at8PDwqNBrlJubW6F36UJhYWEAREREkJOTQ2JiImPGjHGos2DBAp599lk+//xzevXqddHjWa1WIiIiOHjwYKV1fHx88PHxuehxREQux0zgI2yvekkE2pkZjIiY15Pk7e1NZGQkycnJDuXJyckMGDCgyscxDMNhrBDAn//8Z5555hk++eQToqKiLnmMoqIi9u3bR7t2+k+SiJjnN0AMUAwsvERdEal9pk4BEB8fz9ixY4mKiqJ///6sWLGCzMxMJk+eDNhucR07dozVq1cDsGTJEoKDgwkPDwds8yYtWLCAadOm2Y/5/PPP89RTT/Hmm28SGhpq76lq2rQpTZs2BWDGjBkMGzaM4OBgcnNzmTdvHoWFhYwbN+5Knr6ISAUzgWHYplRIAFqYG45Ig2ZqkjRq1Cjy8/OZO3cuWVlZ9OzZk40bNxISEgJAVlYWmZmZ9vqlpaUkJCSQkZGBp6cnnTp1Yv78+UyaNMleZ+nSpRQXF/O73/3Ooa05c+aQmJgIwNGjRxkzZgx5eXm0bt2afv36sX37dnu7IiJmuRXoCXyPLVF60txwRBo0U+dJqs80T5KI1Ja/AmOB1sBPQGNzwxFxK678fpv+dJuIiDgaDYQCx9HLg0XMpCRJRKSO8QRmlG3/GThnYiwiDZmSJBGROmgCtttth4G3zQ1FpMFSkiQiUgc1AR4t254PaPCoyJWnJElEpI56BNu78XYDG02ORaQhUpIkIlJHtQAml23PNzMQkQZKSZKISB32e8Ab2Fq2iMiVoyRJRKQOaw+UvwvgOTMDEWmAlCSJiNRxjwMW4ENs45NE5MpQkiQiUsd1AcpftPS8mYGINDBKkkRE6oE/lK3XYps7SURqn5IkEZF6IBIYCpQAC0yORaShUJIkIlJPzCxbvw7kmhmISAOhJElEpJ64AbgWOAO8bHIsIg2BkiQRkXrCAiSUbS8BCk2MRaQh8DQ7ABERqbrhwNXAfqAr0LiK+wUAtwN3Ad1qJzQRt6MkSUSkHmkEzAHuAXJc2O8wkFq2bw9sydJdQPcajk/EnShJEhGpZ8YAfXDtdtte4B0gGdhTtiRiS5LKE6YeNRmkiBuwGIZhmB1EfVRYWIi/vz8FBQX4+fmZHY6ISJX8AnwA/A34DDh73nfdsE1aeRfQ+cqHJnWEL7bxb+7Kld9vJUnVpCRJROq7EzgmTMWmRiN1xRBs/zy4a6Lkyu+3nm4TEWmgmgP3A3/HNu/SGmyDu71NjEnM9zmw0+wg6giNSRIREfyB+8qWYqDI3HDEJA8B67AlzNeaHEtdoCRJREQceKPepIZqHLYk6S3gBcDL3HBMp9ttIiIiAtjeD9gGOA58anIsdYGSJBEREQFst5fGlG3/1cxA6gglSSIiImI3tmz9PlBgZiB1gJIkERERsesLhGN7kfK7JsdiNiVJIiIiYmfh/3uT1pgZSB2gJElEREQc3Fu2/grINDEOsylJEhEREQchwOCy7TfNDMRkSpJERESkgvvK1muAhvr+MiVJIiIiUsHvAB9gL5BmcixmUZIkIiIiFTTH9i4/aLhzJpmeJC1dupSwsDB8fX2JjIwkJSWl0rpbt24lJiaGgIAAGjduTHh4OAsXLnSo89prrzFw4EBatGhBixYtGDJkCN9+++1ltSsiItIQlT/l9iZwzsxATGJqkrRu3TqmT5/OrFmzSEtLY+DAgcTFxZGZ6XwsvdVqZerUqWzZsoV9+/Yxe/ZsZs+ezYoVK+x1vvrqK8aMGcOmTZv45ptvCA4OJjY2lmPHjlW7XRERkYboZiAAyAE+NzkWM1gMwzBtPFZ0dDR9+/Zl2bJl9rJu3boxYsQIkpKSqnSMkSNHYrVaWbPG+WwOJSUltGjRgldeeYX777+/xtotLCzE39+fgoIC/Pz8qrSPiIhIfTMVWALcA/yvybHUBFd+v03rSSouLiY1NZXY2FiH8tjYWLZt21alY6SlpbFt2zYGDx5caZ3Tp09z9uxZWrZseVntFhUVUVhY6LCIiIi4u/Jbbu8BJ80MxASmJUl5eXmUlJQQGBjoUB4YGEh2dvZF9+3YsSM+Pj5ERUUxZcoUJk6cWGndmTNn0qFDB4YMGXJZ7SYlJeHv729fgoKCLnWKIiIi9d51QBfgP9gSpYbE9IHbFovF4bNhGBXKLpSSksLOnTtZvnw5ixYtYu3atU7rPf/886xdu5b169fj6+t7We0mJCRQUFBgX44cOXLRGEVERNyBBcc5kxoST7MabtWqFR4eHhV6b3Jzcyv08lwoLCwMgIiICHJyckhMTGTMmDEOdRYsWMCzzz7L559/Tq9evS67XR8fH3x8fKp0biIiIu7kPmAO8AVwDOhgbjhXjGk9Sd7e3kRGRpKcnOxQnpyczIABA6p8HMMwKCoqcij785//zDPPPMMnn3xCVFRUrbQrIiLSUFwFxGCbedv5vRv3ZFpPEkB8fDxjx44lKiqK/v37s2LFCjIzM5k8eTJgu8V17NgxVq9eDcCSJUsIDg4mPDwcsM2btGDBAqZNm2Y/5vPPP89TTz3Fm2++SWhoqL3HqGnTpjRt2rRK7YqIiIijscDX2G65zTA5livF1CRp1KhR5OfnM3fuXLKysujZsycbN24kJCQEgKysLIe5i0pLS0lISCAjIwNPT086derE/PnzmTRpkr3O0qVLKS4u5ne/+51DW3PmzCExMbFK7YqIiIiju4D/BnaVLb0uXt0tmDpPUn2meZJERKShGYntCbcZwJ9NjqW66sU8SSIiIlK/nP+akhIzA7lClCSJiIhIldwKtAB+BjaZHMuVoCRJREREqsQHuLtsuyHMmaQkSURERKqs/Jbbu8ApMwO5ApQkiYiISJUNwDZv0ingfZNjqW1KkkRERKTKGtJrSkydJ0lERETqn/uAucBnQDq2wdy1oQnQupaOXRVKkkRERMQlXYBo4B/ANbXYzhhs0w2YRUmSiIiIuCwBmAD8pxbb8KrFY1eFkiQRERFx2XDg32YHUcs0cFtERETECSVJIiIiIk4oSRIRERFxQkmSiIiIiBNKkkREREScUJIkIiIi4oSSJBEREREnlCSJiIiIOKEkSURERMQJJUkiIiIiTihJEhEREXFCSZKIiIiIE0qSRERERJxQkiQiIiLihKfZAdRXhmEAUFhYaHIkIiIiUlXlv9vlv+MXoySpmk6ePAlAUFCQyZGIiIiIq06ePIm/v/9F61iMqqRSUkFpaSk///wzzZo1w2Kx1OixCwsLCQoK4siRI/j5+dXoseuShnCeDeEcQefpbnSe7qMhnCO4dp6GYXDy5Enat29Po0YXH3WknqRqatSoER07dqzVNvz8/Nz6H+pyDeE8G8I5gs7T3eg83UdDOEeo+nleqgepnAZui4iIiDihJElERETECSVJdZCPjw9z5szBx8fH7FBqVUM4z4ZwjqDzdDc6T/fREM4Rau88NXBbRERExAn1JImIiIg4oSRJRERExAklSSIiIiJOKEkSERERcUJJUh2zdOlSwsLC8PX1JTIykpSUFLNDqlGJiYlYLBaHpW3btmaHddm2bNnCsGHDaN++PRaLhQ0bNjh8bxgGiYmJtG/fnsaNG3P99dezZ88ec4K9DJc6z/Hjx1e4vv369TMn2GpKSkri2muvpVmzZrRp04YRI0awf/9+hzrucD2rcp7ucD2XLVtGr1697JMM9u/fn48//tj+vTtcS7j0ebrDtbxQUlISFouF6dOn28tq+noqSapD1q1bx/Tp05k1axZpaWkMHDiQuLg4MjMzzQ6tRvXo0YOsrCz7snv3brNDumynTp2id+/evPLKK06/f/7553nxxRd55ZVX2LFjB23btmXo0KH2dwDWF5c6T4BbbrnF4fpu3LjxCkZ4+TZv3syUKVPYvn07ycnJnDt3jtjYWE6dOmWv4w7XsyrnCfX/enbs2JH58+ezc+dOdu7cyY033sjw4cPtP5zucC3h0ucJ9f9anm/Hjh2sWLGCXr16OZTX+PU0pM647rrrjMmTJzuUhYeHGzNnzjQpopo3Z84co3fv3maHUasA47333rN/Li0tNdq2bWvMnz/fXnbmzBnD39/fWL58uQkR1owLz9MwDGPcuHHG8OHDTYmntuTm5hqAsXnzZsMw3Pd6XniehuGe19MwDKNFixbGX/7yF7e9luXKz9Mw3Otanjx50ujSpYuRnJxsDB482Hj00UcNw6idfzfVk1RHFBcXk5qaSmxsrEN5bGws27ZtMymq2nHw4EHat29PWFgYo0eP5tChQ2aHVKsyMjLIzs52uLY+Pj4MHjzY7a4twFdffUWbNm3o2rUrDz30ELm5uWaHdFkKCgoAaNmyJeC+1/PC8yznTtezpKSEt956i1OnTtG/f3+3vZYXnmc5d7mWU6ZM4bbbbmPIkCEO5bVxPfWC2zoiLy+PkpISAgMDHcoDAwPJzs42KaqaFx0dzerVq+natSs5OTnMmzePAQMGsGfPHgICAswOr1aUXz9n1/ann34yI6RaExcXx1133UVISAgZGRk89dRT3HjjjaSmptbLGX8NwyA+Pp7f/OY39OzZE3DP6+nsPMF9rufu3bvp378/Z86coWnTprz33nt0797d/sPpLteysvME97mWb731Ft999x07duyo8F1t/LupJKmOsVgsDp8Nw6hQVp/FxcXZtyMiIujfvz+dOnVi1apVxMfHmxhZ7XP3awswatQo+3bPnj2JiooiJCSEjz76iJEjR5oYWfVMnTqVXbt2sXXr1grfudP1rOw83eV6Xn311aSnp3PixAneffddxo0bx+bNm+3fu8u1rOw8u3fv7hbX8siRIzz66KN89tln+Pr6VlqvJq+nbrfVEa1atcLDw6NCr1Fubm6FrNidWK1WIiIiOHjwoNmh1Jryp/ca2rUFaNeuHSEhIfXy+k6bNo0PPviATZs20bFjR3u5u13Pys7Tmfp6Pb29vencuTNRUVEkJSXRu3dvXnrpJbe7lpWdpzP18VqmpqaSm5tLZGQknp6eeHp6snnzZl5++WU8PT3t16wmr6eSpDrC29ubyMhIkpOTHcqTk5MZMGCASVHVvqKiIvbt20e7du3MDqXWhIWF0bZtW4drW1xczObNm9362gLk5+dz5MiRenV9DcNg6tSprF+/ni+//JKwsDCH793lel7qPJ2pj9fTGcMwKCoqcptrWZny83SmPl7Lm266id27d5Oenm5foqKiuPfee0lPT+eqq66q+etZ7eHlUuPeeustw8vLy3j99deNvXv3GtOnTzesVqtx+PBhs0OrMY899pjx1VdfGYcOHTK2b99u/Pa3vzWaNWtW78/x5MmTRlpampGWlmYAxosvvmikpaUZP/30k2EYhjF//nzD39/fWL9+vbF7925jzJgxRrt27YzCwkKTI3fNxc7z5MmTxmOPPWZs27bNyMjIMDZt2mT079/f6NChQ706z//6r/8y/P39ja+++srIysqyL6dPn7bXcYfreanzdJfrmZCQYGzZssXIyMgwdu3a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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(pso_fitness_values,label=\"PSO\",color=\"cyan\")\n",
    "plt.xlabel(\"No of iterations\")\n",
    "plt.ylabel(\"Fitness values\")\n",
    "plt.title('Convergence of PSO', fontweight='bold')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "id": "5824edfd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1da83f83eb0>"
      ]
     },
     "execution_count": 301,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAHFCAYAAAA5VBcVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAABf9ElEQVR4nO3de1yUdd7/8dcIchARS+SgIhJqaFiu0Jq65iElyXU9dBvZamonvT38csktSd3IWtHW1A5qad0WtpW7m9mu2W5UHjM3I7g1T3knihmKUoKHhITv74+RWUdAGWS4Ynw/H495MHNd37muzzWX27z3+73me9mMMQYRERERcVkDqwsQERERqa8UpERERERqSEFKREREpIYUpERERERqSEFKREREpIYUpERERERqSEFKREREpIYUpERERERqSEFKREREpIYUpETquYKCAv74xz/SvXt3rr32Wnx9fYmIiKBv37688MILnD592uoS5WegrKyMP/zhD0RHR+Pn54fNZqNp06aXfI/NZqvw8Pf3Jzo6mjFjxrBnzx6n9q+99ppT27Zt21JWVubU5vDhwzRs2NCp3cXbAdi0aRP33HMPbdq0wc/Pj8DAQG644QYefvhh9u/ff8Wfh0itMSJSb33yySemefPmBqjykZWVZXWZ8jPw0ksvVfi3ERQUdMn3XOrfVfn7Dx8+7Gi/fPnyCm3WrFnjtM3p06dXaLN7926nNsnJyZfcr7+/v3n77bdr7bMRuRLqkRKpp77++mt+85vfcOzYMQASExP58ssvKS4upqCggPfee4++fftaXKX7nDlzxuoS6pXMzEzH89dee42ysjJOnDhR7ffn5ORgjGHv3r2Eh4cDUFhYyOrVqy/5vhdeeMHxvLi4mGXLll22/fz58wFo1KgRK1as4NSpUxw9epTHHnsMgB9//JF7772XL7/8str1i7iN1UlORGrmnnvucfw/9NjYWHPu3LlK2/3000+O50VFRWbGjBnmhhtuMP7+/sbPz8907NjRTJ8+3RQWFjq9LzIy0rH9vXv3miFDhpgmTZqY4OBgc9ddd5mjR48aY4w5duyY8fHxMYBp37690zbOnDljmjRpYgATFhbmqKWkpMQsWLDA3HzzzaZx48bGx8fHtG/f3jz22GOXrGPXrl1m4MCBJjAw0LRp08bR5r333jM33XST8fX1NW3atDFpaWnm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wsLcUZdYoXxo7xvgNBBgYS0iIiL1gMtBas+ePbRv394dtYjVQs4/8oFdwM3WliMiIvJz5/LF5gpRHk7DeyIiItVW41/tiYcqH9770tIqRERE6gUFKXF20/m/i4H+QAZgrCtHRETk50xBSpzdCdyLfYLOj4AEIA54GzhnYV0iIiI/Q1ccpEpLS8nOzuaHH36ojXrEao2B17H/cu//AY2ALGAE0B5YBJyxrDoREZGfFZeD1JQpU3j11VcBe4jq1asXXbp0ISIigvXr19d2fWKVSOA5IBd4EggGcoBJ59fNAgosq05ERORnwWaMcekKmFatWrF69Wri4+NZvXo1EydOZN26daSnp7Nu3To+/fRTlwpYvHgxf/rTn8jLy+OGG25g4cKF9OzZs9K2mzdv5rHHHmPPnj2cOXOGyMhIxo0bx+9+9ztHm1WrVjF79mz+7//+j59++ol27drxyCOPMGrUKEebNm3acPDgwQrbnzBhAosWLQJgzJgxvP76607ru3btytatW6t9bEVFRQQFBVFYWEiTJk2q/b6fpTPAcuBZ7IEK7L1V9wPjgCCL6hKp7xoDTa0uQkQu5Mr3t8vzSB0/ftwxCefatWsZPnw47du35/777+f55593aVsrV65kypQpLF68mB49evDyyy+TmJjIrl27aN26dYX2AQEBTJo0iRtvvJGAgAA2b97MuHHjCAgI4KGHHgLg2muvZfr06cTExODj48OaNWsYO3YsISEh3H777QBs27aN0tJSx3a/+uor+vfvz/Dhw532N2DAAJYvX+547ePj49LxeZRGwETsoelvwDPYh/xeOP8QkZqxAf8NpAH1/P9viVyNXO6RioyMZNmyZdx2221ERUWxePFifv3rX7Nz505+9atfuXStVNeuXenSpQtLlixxLOvQoQNDhgwhLS2tWtsYNmwYAQEBrFixoso2Xbp0YeDAgTz11FOVrp8yZQpr1qxh37592Gw2wN4jdeLECVavXl3t47mYR/VIXcwAH2MPVBvRL/tEaqrk/N+W2H8t+xsLaxERwM09UmPHjuWuu+4iPDwcm81G//79Afj3v/9NTExMtbdTUlJCZmYm06ZNc1qekJDAli1bqrWNrKwstmzZwtNPP13pemMMn3zyCXv37mXu3LlV1vHGG2+QnJzsCFHl1q9fT0hICE2bNqVXr1788Y9/JCQkpMp6iouLKS4udrwuKiqq1nHUSzag3/mHiNTcJ8BD2H/gMRgYDjwP6O5bIvWCy0EqNTWV2NhYDh06xPDhw/H19QXAy8urQii6lOPHj1NaWkpoaKjT8tDQUI4cOXLJ97Zq1Ypjx45x7tw5UlNTeeCBB5zWFxYW0rJlS4qLi/Hy8mLx4sWOwHex1atXc+LECcaMGeO0PDExkeHDhxMZGUlOTg4zZ86kb9++ZGZmOo75YmlpaTz55JOXOXIRkQv0BXZg/wHHn4C/Yp+/bR5wH/b/0yIiP1suD+1V5sSJEzRt2tSl93z33Xe0bNmSLVu20K1bN8fyP/7xj6xYsYI9e/ZU+d6cnBxOnTrF1q1bmTZtGi+++CIjRoxwrC8rK2P//v2cOnWKjz/+mKeeeorVq1fTu3fvCtu6/fbb8fHx4R//+Mcl683LyyMyMpK3336bYcOGVdqmsh6piIgIzxzaE5Halw08AGSef90bWAq0s6gekauUW4f25s6dS5s2bUhKSgLgrrvu4p133iE8PJy1a9dy4403XmYLdsHBwXh5eVXofcrPz6/QS3WxqKgoADp16sTRo0dJTU11ClINGjSgbdu2AHTu3Jndu3eTlpZWIUgdPHiQjz76iFWrVl223vDwcCIjI9m3b1+VbXx9favsrRIRuazOwFbsQ3szgPXY73+ZCjwCNLSoLhGpksvzSL388stEREQAkJGRQUZGBh988AEDBgxg6tSp1d6Oj48PcXFxZGRkOC3PyMige/fu1d6OMcapF8iVNsuXLyckJISBAwdedj8FBQUcOnSI8PDwatcmIuIybyAZ+Ar7bZqKgRTgZmCbhXWJSKVc7pHKy8tzBKk1a9Zw1113kZCQQJs2bejatatL20pOTmbUqFHEx8fTrVs3li5dSm5uLuPHjwcgJSWFw4cPk56eDsCiRYto3bq146L2zZs3M2/ePCZPnuzYZlpaGvHx8URHR1NSUsLatWtJT093+mUg2If/li9fzujRo/H2dv4YTp06RWpqKnfeeSfh4eEcOHCAxx9/nODgYIYOHeraByYiUhPXAf8C3gCmAP8L3IJ9uK+6PVP+wGygQ+2XJyJ2Lgepa665hkOHDhEREcE///lPxy/mjDFOczNVR1JSEgUFBcyaNYu8vDxiY2NZu3YtkZGRgD205ebmOtqXlZWRkpJCTk4O3t7eREdHM2fOHMaNG+doc/r0aSZMmMC3336Lv78/MTExvPHGG46hyHIfffQRubm53HfffRXq8vLyYseOHaSnp3PixAnCw8Pp06cPK1euJDAw0KVjFBGpMRswChgA/A74M/Zf+bnCC/vcbyLiFi5fbD5p0iTWrFlDu3btyMrK4sCBAzRu3JiVK1cyd+5cvvzyS3fVWu949DxSIlL3/g18Xc22BdjDlw+QB1zrrqJEPI9bLzZfsGABbdq04dChQzzzzDM0btwYsPceTZgwoWYVi4jI5XU9/6iu17APCb4N6D/PIm5RK9MfSOXUIyUillqA/cL1X2LvzRKRanHl+9vlX+0BrFixgl/96le0aNHCcfPfhQsX8t5779VkcyIi4g73YL9G6nOg6qn5ROQKuByklixZQnJyMomJiZw4ccJxgXnTpk1ZuHBhbdcnIiI1FQoknn/+upWFiHgul4PUCy+8wLJly5g+fTpeXl6O5fHx8ezYsaNWixMRkSs0+vzfFYBrP6wWkWpwOUjl5OTwi1/8osJyX19fTp8+XStFiYhILRkEXAMcxvWpE0TkslwOUlFRUWRnZ1dY/sEHH9CxY8faqElERGqLL3D3+eca3hOpdS5Pf/D73/+eiRMncvbsWYwxfP7557z11lukpaXxyiuvuKNGERG5EqOBJcAqoAjQj4hFao3LQWrs2LGcO3eORx99lDNnznDPPffQsmVLnnvuOe6+++7Lb0BEROrWL4Hrgb3YZzmveEMHEamhK5pH6vjx45SVlRESElKbNXkMzSMlIj8bacDjwK3ABotrEfmZc/s8UuWCg4MVokRE6oNR2O/dtxHIsbgWEQ/icpA6evQoo0aNokWLFnh7e+Pl5eX0EBGRn6FWwG3nn6dbWYiIZ3H5GqkxY8aQm5vLzJkzCQ8Px2azuaMuERGpbaOBj7AHqT9g76ESkSvicpDavHkzmzZtonPnzm4oR0RE3GYo0BjYD2wGelpbjogncHloLyIiAt3nWESkHgoAhp9//pqFdYh4EJeD1MKFC5k2bRoHDhxwQzkiIuJW5beM+StwxspCRDyDy0N7SUlJnDlzhujoaBo1akTDhg2d1n///fe1VpyIiNSynkAb4ADwLvBbK4sRqf9cDlILFizQBeYiIvVVA+y9Uk9iv2WMgpTIFbmiCTnl0jQhp4j8LO0HorH/ai8X+9QIIuLg1gk5vby8yM/Pr7C8oKBA80iJiNQH12Ef4jPAGxbXIlLPuRykqurAKi4uxsfH54oLEhGROlB+0fnr2AOViNRIta+Rev755wGw2Wy88sorNG7c2LGutLSUjRs3EhMTU/sViohI7RsOTAb2ANuw39hYRFxW7SC1YMECwN4j9dJLLzkN4/n4+NCmTRteeuml2q9QRERqXxPsE3S+ib1XSkFKpEaqHaRycux3uezTpw+rVq3immuucVtRIiJSB0ZjD1JvAfMBX2vLEamPXL5Gat26dQpRIiKe4DagJfADsMbiWkTqqWr1SCUnJ/PUU08REBBAcnLyJdvOnz+/VgoTERE38wJGAnOxD+/daW05IvVRtYJUVlYWP/30k+N5VTRRp4hIPTMae5D6AMgHQqwtR6S+qVaQWrduHfv37ycoKIh169a5uyYREakrHYCbsf9y701giqXViNQ71b7YvF27duTl5RESYv+/K0lJSTz//POEhoa6rTgREakDo7EHqYXA/1lbSo2EAo+ii+XFEtW+RUyDBg04cuSII0gFBgbyv//7v1x33XVuLbA+0y1iRKReKMB+0Xmx1YVcgb8C/2V1EeIpXPn+dvmmxSIi4mGaAe8DG6wupAbeA7Zjv2egiAWqHaRsNluFi8l1cbmIiIe47fyjvjmFPUgdsboQuVpVO0gZYxgzZgy+vvZB6LNnzzJ+/HgCAgKc2q1atap2KxQREalK2Pm/ClJikWpPyDl69GhCQkIICgoiKCiIkSNH0qJFC8fr8oerFi9eTFRUFH5+fsTFxbFp06Yq227evJkePXrQrFkz/P39iYmJcdy6ptyqVauIj4+nadOmBAQE0LlzZ1asWOHUJjU11dHDVv4ICwtzamOMITU1lRYtWuDv70/v3r3ZuXOny8cnIiJupCAlFqt2j9Ty5ctrfecrV65kypQpLF68mB49evDyyy+TmJjIrl27aN26dYX2AQEBTJo0iRtvvJGAgAA2b97MuHHjCAgI4KGHHgLg2muvZfr06cTExODj48OaNWsYO3YsISEh3H777Y5t3XDDDXz00UeO1xfeOxDgmWeeYf78+bz22mu0b9+ep59+mv79+7N3714CAwNr/bMQEZEaUJASi1X7V3vu0LVrV7p06cKSJUscyzp06MCQIUNIS0ur1jaGDRtGQEBAhV6nC3Xp0oWBAwfy1FNPAfYeqdWrV5OdnV1pe2MMLVq0YMqUKTz22GMAFBcXExoayty5cxk3bly1atOv9kRE3Gw7cBPQHPuEoiK1wJXvb5fvtVdbSkpKyMzMJCEhwWl5QkICW7ZsqdY2srKy2LJlC7169ap0vTGGjz/+mL1793Lrrbc6rdu3bx8tWrQgKiqKu+++m/379zvW5eTkcOTIEafafH196dWr1yVrKy4upqioyOkhIiJuVN4jdRw4Z2UhcrWyLEgdP36c0tLSChN6hoaGcuTIpftoW7Vqha+vL/Hx8UycOJEHHnjAaX1hYSGNGzfGx8eHgQMH8sILL9C/f3/H+q5du5Kens6//vUvli1bxpEjR+jevTsFBQUAjv27WltaWprT9WIRERGX/yBERKTmmmG/Z6ABjllci1yVLJ9H6uIpFIwxl51WYdOmTZw6dYqtW7cybdo02rZty4gRIxzrAwMDyc7O5tSpU3z88cckJydz3XXX0bt3bwASExMdbTt16kS3bt2Ijo7m9ddfd7ops6u1paSkOL2/qKhIYUpExJ28sN8fMA/7dVLh1pYjVx/LglRwcDBeXl4Venjy8/Mve9uZqKgowB6Cjh49SmpqqlOQatCgAW3btgWgc+fO7N69m7S0NEeQulhAQACdOnVi3759AI5f8B05coTw8P/8r/Jytfn6+jqmhxARkToSxn+ClEgds2xoz8fHh7i4ODIyMpyWZ2Rk0L1792pvxxhDcfGl72twuTbFxcXs3r3bEZqioqIICwtzqq2kpIQNGza4VJuIiNQB/XJPLGTp0F5ycjKjRo0iPj6ebt26sXTpUnJzcxk/fjxgHyo7fPgw6enpACxatIjWrVsTExMD2OeVmjdvHpMnT3ZsMy0tjfj4eKKjoykpKWHt2rWkp6c7/TJw6tSpDBo0iNatW5Ofn8/TTz9NUVERo0ePBuxDelOmTGH27Nm0a9eOdu3aMXv2bBo1asQ999xTVx+PiIhUh4KUWMjSIJWUlERBQQGzZs0iLy+P2NhY1q5dS2RkJAB5eXnk5v7nBkplZWWkpKSQk5ODt7c30dHRzJkzx2k6gtOnTzNhwgS+/fZbx6Sdb7zxBklJSY423377LSNGjOD48eM0b96cW265ha1btzr2C/Doo4/y448/MmHCBH744Qe6du3Khx9+qDmkRER+bhSkxEKWziPl6TSPlIhIHXgeeBi4C1hpcS3iEerFPFIiIiK1Qj1SYiEFKRERqd8UpMRCClIiIlK/KUiJhRSkRESkfisPUkXAGSsLkauRgpSIiNRvgYD/+edHrSxErkYKUiIiUr/Z0PCeWEZBSkRE6j8FKbGIgpSIiNR/ClJiEQUpERGp/xSkxCIKUiIiUv8pSIlFFKRERKT+U5ASiyhIiYhI/acgJRZRkBIRkfpPQUosoiAlIiL134VBylhZiFxtFKRERKT+Cz3/twQ4YWEdctVRkBIRkfrPF7jm/HMN70kdUpASERHPUN4rpSAldUhBSkREPIMuOBcLKEiJiIhnUJASCyhIiYiIZ1CQEgsoSImIiGdQkBILKEiJiIhnUJASCyhIiYiIZ1CQEgsoSImIiGdQkBILKEiJiIhnKA9Sx4BzVhYiVxMFKRER8QzB2L/VDPYwJVIHFKRERMQzeAEh559reE/qiIKUiIh4Dl0nJXVMQUpERDyHgpTUMQUpERHxHApSUscUpERExHOUB6mjllYhVxEFKRER8RzqkZI6piAlIiKeQ0FK6pjlQWrx4sVERUXh5+dHXFwcmzZtqrLt5s2b6dGjB82aNcPf35+YmBgWLFjg1GbVqlXEx8fTtGlTAgIC6Ny5MytWrHBqk5aWxs0330xgYCAhISEMGTKEvXv3OrUZM2YMNpvN6XHLLbfU3oGLiEjtU5CSOuZt5c5XrlzJlClTWLx4MT169ODll18mMTGRXbt20bp16wrtAwICmDRpEjfeeCMBAQFs3ryZcePGERAQwEMPPQTAtddey/Tp04mJicHHx4c1a9YwduxYQkJCuP322wHYsGEDEydO5Oabb+bcuXNMnz6dhIQEdu3aRUBAgGN/AwYMYPny5Y7XPj4+bv5ERETkiihISR2zGWOMVTvv2rUrXbp0YcmSJY5lHTp0YMiQIaSlpVVrG8OGDSMgIKBCr9OFunTpwsCBA3nqqacqXX/s2DFCQkLYsGEDt956K2DvkTpx4gSrV6+u/gFdpKioiKCgIAoLC2nSpEmNtyMiItVUCDQ9//wM4G9dKVJ/ufL9bdnQXklJCZmZmSQkJDgtT0hIYMuWLdXaRlZWFlu2bKFXr16VrjfG8PHHH7N3715HQKpMYWEhYO/NutD69esJCQmhffv2PPjgg+Tn51+ynuLiYoqKipweIiJSh5oAfuef65d7UgcsC1LHjx+ntLSU0NBQp+WhoaEcOXLpPtlWrVrh6+tLfHw8EydO5IEHHnBaX1hYSOPGjfHx8WHgwIG88MIL9O/fv9JtGWNITk7mV7/6FbGxsY7liYmJ/PnPf+aTTz7h2WefZdu2bfTt25fi4uIq60pLSyMoKMjxiIiIuNzHICIitcmGhvekTll6jRSAzWZzem2MqbDsYps2beLUqVNs3bqVadOm0bZtW0aMGOFYHxgYSHZ2NqdOneLjjz8mOTmZ6667jt69e1fY1qRJk9i+fTubN292Wp6UlOR4HhsbS3x8PJGRkbz//vsMGzas0rpSUlJITk52vC4qKlKYEhGpa2HAARSkpE5YFqSCg4Px8vKq0PuUn59foZfqYlFRUQB06tSJo0ePkpqa6hSkGjRoQNu2bQHo3Lkzu3fvJi0trUKQmjx5Mn//+9/ZuHEjrVq1uuQ+w8PDiYyMZN++fVW28fX1xdfX95LbERERN1OPlNQhy4b2fHx8iIuLIyMjw2l5RkYG3bt3r/Z2jDGXHG6rrI0xhkmTJrFq1So++eQTRzC7lIKCAg4dOkR4eHi1axMREQsoSEkdsnRoLzk5mVGjRhEfH0+3bt1YunQpubm5jB8/HrAPlR0+fJj09HQAFi1aROvWrYmJiQHs80rNmzePyZMnO7aZlpZGfHw80dHRlJSUsHbtWtLT051+GThx4kTefPNN3nvvPQIDAx29YkFBQfj7+3Pq1ClSU1O58847CQ8P58CBAzz++OMEBwczdOjQuvp4RESkJhSkpA5ZGqSSkpIoKChg1qxZ5OXlERsby9q1a4mMjAQgLy+P3NxcR/uysjJSUlLIycnB29ub6Oho5syZw7hx4xxtTp8+zYQJE/j2228dk3a+8cYbTtc8lYeqi4f6li9fzpgxY/Dy8mLHjh2kp6dz4sQJwsPD6dOnDytXriQwMNCNn4iIiFwxBSmpQ5bOI+XpNI+UiIgF3gOGAF2BrdaWIvVTvZhHSkRExC3UIyV1SEFKREQ8y4VBSmMu4mYKUiIi4lnKZ9Apxn7LGBE3UpASERHP4sd/7ren4T1xMwUpERHxPLpOSuqIgpSIiHgeBSmpIwpSIiLieRSkpI4oSImIiOdRkJI6oiAlIiKeR0FK6oiClIiIeB4FKakjClIiIuJ5yueSUpASN1OQEhERz6MeKakjClIiIuJ5yoPUMaDUykLE0ylIiYiI52mO/RuuDHuYEnETBSkREfE8XtjDFGh4T9xKQUpERDyTrpOSOqAgJSIinklBSuqAgpSIiHgmBSmpAwpSIiLimRSkpA4oSImIiGdSkJI6oCAlIiKeSUFK6oCClIiIeCYFKakDClIiIuKZFKSkDihIiYiIZyoPUoXAWSsLEU+mICUiIp4pCPA9//yolYWIJ1OQEhERz2RDw3vidgpSIiLiuRSkxM0UpERExHMpSImbKUiJiIjnUpASN1OQEhERz6UgJW6mICUiIp5LQUrcTEFKREQ8l4KUuJnlQWrx4sVERUXh5+dHXFwcmzZtqrLt5s2b6dGjB82aNcPf35+YmBgWLFjg1GbVqlXEx8fTtGlTAgIC6Ny5MytWrHB5v8YYUlNTadGiBf7+/vTu3ZudO3fWzkGLiEjdUJASN7M0SK1cuZIpU6Ywffp0srKy6NmzJ4mJieTm5lbaPiAggEmTJrFx40Z2797NjBkzmDFjBkuXLnW0ufbaa5k+fTqfffYZ27dvZ+zYsYwdO5Z//etfLu33mWeeYf78+bz44ots27aNsLAw+vfvz8mTJ933gYiISO26MEgZKwsRT2Uzxlj2T6tr16506dKFJUuWOJZ16NCBIUOGkJaWVq1tDBs2jICAgEp7ncp16dKFgQMH8tRTT1Vrv8YYWrRowZQpU3jssccAKC4uJjQ0lLlz5zJu3Lhq1VZUVERQUBCFhYU0adKkWu8REZFa9CPQ6PzzE9hnOxe5DFe+vy3rkSopKSEzM5OEhASn5QkJCWzZsqVa28jKymLLli306tWr0vXGGD7++GP27t3LrbfeWu395uTkcOTIEac2vr6+9OrVq9q1iYjIz4A//wlPGt4TN/C2asfHjx+ntLSU0NBQp+WhoaEcOXLpf+2tWrXi2LFjnDt3jtTUVB544AGn9YWFhbRs2ZLi4mK8vLxYvHgx/fv3r/Z+y/9W1ubgwYNV1lVcXExxcbHjdVFR0SWPQ0RE6kAY9hsXHwGut7gW8TiWBalyNpvN6bUxpsKyi23atIlTp06xdetWpk2bRtu2bRkxYoRjfWBgINnZ2Zw6dYqPP/6Y5ORkrrvuOnr37u3Sfl2tLS0tjSeffPKStYuISB0LA/aiHilxC8uCVHBwMF5eXhV6n/Lz8yv0BF0sKioKgE6dOnH06FFSU1OdglSDBg1o27YtAJ07d2b37t2kpaXRu3fvau03LMx+deKRI0cIDw+vdm0pKSkkJyc7XhcVFREREXHJYxERETfTL/fEjSy7RsrHx4e4uDgyMjKclmdkZNC9e/dqb8cY4zScdrk21dlvVFQUYWFhTm1KSkrYsGHDJWvz9fWlSZMmTg8REbGYgpS4kaVDe8nJyYwaNYr4+Hi6devG0qVLyc3NZfz48YC9h+fw4cOkp6cDsGjRIlq3bk1MTAxgn1dq3rx5TJ482bHNtLQ04uPjiY6OpqSkhLVr15Kenu70C73L7ddmszFlyhRmz55Nu3btaNeuHbNnz6ZRo0bcc889dfXxiIhIbVCQEjeyNEglJSVRUFDArFmzyMvLIzY2lrVr1xIZGQlAXl6e09xOZWVlpKSkkJOTg7e3N9HR0cyZM8dpOoLTp08zYcIEvv32W8eknW+88QZJSUnV3i/Ao48+yo8//siECRP44Ycf6Nq1Kx9++CGBgYF18MmIiEitUZASN7J0HilPp3mkRER+Bv4JJAKdgSxrS5H6oV7MIyUiIlIn1CMlbqQgJSIinq08SOUDpVYWIp5IQUpERDxbc+zfdmXAcYtrEY+jICUiIp7NC3uYAg3vSa1TkBIREc9XPpeygpTUMgUpERHxfLrgXNxEQUpERDyfgpS4iYKUiIh4PgUpcRMFKRER8XwKUuImClIiIuL5FKTETRSkRETE8ylIiZsoSImIiOdTkBI3UZASERHPVx6kTgBnLaxDPI6ClIiIeL6mgM/550ctrEM8joKUiIh4Phsa3hO3UJASEZGrg4KUuIGClIiIXB0UpMQNFKREROTqoCAlbqAgJSIiV4fyIKWLzaUWKUiJiMjVQT1S4gbeVhcgIiJSJ8qD1MHzD/EMTYBrrNu9gpSIiFwdyoPUl0AbC+uQ2pUCzLZu9wpSIiJydegMdAF2WVyH1C6Lk4yClIiIXB38gUyrixBPo4vNRURERGpIQUpERESkhhSkRERERGpIQUpERESkhhSkRERERGpIQUpERESkhhSkRERERGpIQUpERESkhhSkRERERGrI8iC1ePFioqKi8PPzIy4ujk2bNlXZdvPmzfTo0YNmzZrh7+9PTEwMCxYscGqzbNkyevbsyTXXXMM111xDv379+Pzzz53atGnTBpvNVuExceJER5sxY8ZUWH/LLbfU7sGLiIhIvWbpLWJWrlzJlClTWLx4MT169ODll18mMTGRXbt20bp16wrtAwICmDRpEjfeeCMBAQFs3ryZcePGERAQwEMPPQTA+vXrGTFiBN27d8fPz49nnnmGhIQEdu7cScuWLQHYtm0bpaWlju1+9dVX9O/fn+HDhzvtb8CAASxfvtzx2sfHxx0fg4iIiNRTNmOMsWrnXbt2pUuXLixZssSxrEOHDgwZMoS0tLRqbWPYsGEEBASwYsWKSteXlpZyzTXX8OKLL3LvvfdW2mbKlCmsWbOGffv2YbPZAHuP1IkTJ1i9erVrB3WBoqIigoKCKCwspEmTJjXejoiIiNQdV76/LRvaKykpITMzk4SEBKflCQkJbNmypVrbyMrKYsuWLfTq1avKNmfOnOGnn37i2muvrbKON954g/vuu88RosqtX7+ekJAQ2rdvz4MPPkh+fv4l6ykuLqaoqMjpISIiIp7LsiB1/PhxSktLCQ0NdVoeGhrKkSNHLvneVq1a4evrS3x8PBMnTuSBBx6osu20adNo2bIl/fr1q3T96tWrOXHiBGPGjHFanpiYyJ///Gc++eQTnn32WbZt20bfvn0pLi6ucl9paWkEBQU5HhEREZc8DhEREanfLL1GCqjQC2SMqbDsYps2beLUqVNs3bqVadOm0bZtW0aMGFGh3TPPPMNbb73F+vXr8fPzq3Rbr776KomJibRo0cJpeVJSkuN5bGws8fHxREZG8v777zNs2LBKt5WSkkJycrLjdWFhIa1bt1bPlIiISD1S/r1dnaufLAtSwcHBeHl5Veh9ys/Pr9BLdbGoqCgAOnXqxNGjR0lNTa0QpObNm8fs2bP56KOPuPHGGyvdzsGDB/noo49YtWrVZesNDw8nMjKSffv2VdnG19cXX19fx+vyE6GeKRERkfrn5MmTBAUFXbKNZUHKx8eHuLg4MjIyGDp0qGN5RkYGgwcPrvZ2jDEVhtv+9Kc/8fTTT/Ovf/2L+Pj4Kt+7fPlyQkJCGDhw4GX3U1BQwKFDhwgPD692bS1atODQoUMEBgZetpfNVUVFRURERHDo0CGPvZD9ajhG0HF6Gh2n57gajhF0nJUxxnDy5MkKo1WVsXRoLzk5mVGjRhEfH0+3bt1YunQpubm5jB8/HrAPlR0+fJj09HQAFi1aROvWrYmJiQHs80rNmzePyZMnO7b5zDPPMHPmTN58803atGnj6PFq3LgxjRs3drQrKytj+fLljB49Gm9v54/h1KlTpKamcueddxIeHs6BAwd4/PHHCQ4Odgp9l9OgQQNatWpVsw+nmpo0aeLR//Dh6jhG0HF6Gh2n57gajhF0nBe7XE9UOUuDVFJSEgUFBcyaNYu8vDxiY2NZu3YtkZGRAOTl5ZGbm+toX1ZWRkpKCjk5OXh7exMdHc2cOXMYN26co83ixYspKSnhv/7rv5z29cQTT5Camup4/dFHH5Gbm8t9991XoS4vLy927NhBeno6J06cIDw8nD59+rBy5UoCAwNr+VMQERGR+srSeaSk5q6GOaquhmMEHaen0XF6jqvhGEHHeaUsv0WM1Iyvry9PPPGE08XtnuZqOEbQcXoaHafnuBqOEXScV0o9UiIiIiI1pB4pERERkRpSkBIRERGpIQUpERERkRpSkBIRERGpIQWpemjx4sVERUXh5+dHXFwcmzZtsrqkWpWamorNZnN6hIWFWV3WFdu4cSODBg2iRYsW2Gw2Vq9e7bTeGENqaiotWrTA39+f3r17s3PnTmuKvQKXO84xY8ZUOL+33HKLNcXWUFpaGjfffDOBgYGEhIQwZMgQ9u7d69TGE85ndY7TE87nkiVLuPHGGx0TNXbr1o0PPvjAsd4TzuXljtETzmNl0tLSsNlsTJkyxbGsts+nglQ9s3LlSqZMmcL06dPJysqiZ8+eJCYmOk1c6gluuOEG8vLyHI8dO3ZYXdIVO336NDfddBMvvvhipeufeeYZ5s+fz4svvsi2bdsICwujf//+nDx5so4rvTKXO06AAQMGOJ3ftWvX1mGFV27Dhg1MnDiRrVu3kpGRwblz50hISOD06dOONp5wPqtznFD/z2erVq2YM2cOX3zxBV988QV9+/Zl8ODBji9XTziXlztGqP/n8WLbtm1j6dKlFe63W+vn00i98stf/tKMHz/eaVlMTIyZNm2aRRXVvieeeMLcdNNNVpfhVoB59913Ha/LyspMWFiYmTNnjmPZ2bNnTVBQkHnppZcsqLB2XHycxhgzevRoM3jwYEvqcZf8/HwDmA0bNhhjPPd8Xnycxnjm+TTGmGuuuca88sorHnsujfnPMRrjeefx5MmTpl27diYjI8P06tXLPPzww8YY9/xvUz1S9UhJSQmZmZkkJCQ4LU9ISGDLli0WVeUe+/bto0WLFkRFRXH33Xezf/9+q0tyq5ycHI4cOeJ0bn19fenVq5fHnVuA9evXExISQvv27XnwwQfJz8+3uqQrUlhYCMC1114LeO75vPg4y3nS+SwtLeXtt9/m9OnTdOvWzSPP5cXHWM6TzuPEiRMZOHAg/fr1c1rujvNp6b32xDXHjx+ntLSU0NBQp+WhoaGOmzN7gq5du5Kenk779u05evQoTz/9NN27d2fnzp00a9bM6vLcovz8VXZuDx48aEVJbpOYmMjw4cOJjIwkJyeHmTNn0rdvXzIzM+vlzMrGGJKTk/nVr35FbGws4Jnns7LjBM85nzt27KBbt26cPXuWxo0b8+6779KxY0fHl6snnMuqjhE85zwCvP3223z55Zds27atwjp3/G9TQaoestlsTq+NMRWW1WeJiYmO5506daJbt25ER0fz+uuvk5ycbGFl7ufp5xbsNysvFxsbS3x8PJGRkbz//vsMGzbMwspqZtKkSWzfvp3NmzdXWOdJ57Oq4/SU83n99deTnZ3NiRMneOeddxg9ejQbNmxwrPeEc1nVMXbs2NFjzuOhQ4d4+OGH+fDDD/Hz86uyXW2eTw3t1SPBwcF4eXlV6H3Kz8+vkK49SUBAAJ06dWLfvn1Wl+I25b9KvNrOLUB4eDiRkZH18vxOnjyZv//976xbt45WrVo5lnva+azqOCtTX8+nj48Pbdu2JT4+nrS0NG666Saee+45jzqXVR1jZerreczMzCQ/P5+4uDi8vb3x9vZmw4YNPP/883h7ezvOWW2eTwWpesTHx4e4uDgyMjKclmdkZNC9e3eLqnK/4uJidu/eTXh4uNWluE1UVBRhYWFO57akpIQNGzZ49LkFKCgo4NChQ/Xq/BpjmDRpEqtWreKTTz4hKirKab2nnM/LHWdl6uP5rIwxhuLiYo85l5UpP8bK1NfzeNttt7Fjxw6ys7Mdj/j4eH7729+SnZ3NddddV/vns8aXxIsl3n77bdOwYUPz6quvml27dpkpU6aYgIAAc+DAAatLqzWPPPKIWb9+vdm/f7/ZunWr+fWvf20CAwPr/TGePHnSZGVlmaysLAOY+fPnm6ysLHPw4EFjjDFz5swxQUFBZtWqVWbHjh1mxIgRJjw83BQVFVlcuWsudZwnT540jzzyiNmyZYvJyckx69atM926dTMtW7asV8f53//93yYoKMisX7/e5OXlOR5nzpxxtPGE83m54/SU85mSkmI2btxocnJyzPbt283jjz9uGjRoYD788ENjjGecy0sdo6ecx6pc+Ks9Y2r/fCpI1UOLFi0ykZGRxsfHx3Tp0sXpp8ieICkpyYSHh5uGDRuaFi1amGHDhpmdO3daXdYVW7dunQEqPEaPHm2Msf8s94knnjBhYWHG19fX3HrrrWbHjh3WFl0DlzrOM2fOmISEBNO8eXPTsGFD07p1azN69GiTm5trddkuqez4ALN8+XJHG084n5c7Tk85n/fdd5/jv6nNmzc3t912myNEGeMZ5/JSx+gp57EqFwep2j6fNmOMqVlfloiIiMjVTddIiYiIiNSQgpSIiIhIDSlIiYiIiNSQgpSIiIhIDSlIiYiIiNSQgpSIiIhIDSlIiYiIiNSQgpSIXBWOHDlC//79CQgIoGnTppW2GTNmDEOGDKnTuqqjTZs2LFy40OoyRKQSClIiUifGjBmDzWZjzpw5TstXr15d47uuu2LBggXk5eWRnZ3N119/XWmb5557jtdee83xunfv3kyZMsXttZV77bXXKg1527Zt46GHHqqzOkSk+hSkRKTO+Pn5MXfuXH744Yc63/c333xDXFwc7dq1IyQkpNI2QUFBVfZWXYmSkpIren/z5s1p1KhRLVUjIrVJQUpE6ky/fv0ICwsjLS3tku3eeecdbrjhBnx9fWnTpg3PPvvsZbe9ZMkSoqOj8fHx4frrr2fFihWOdW3atOGdd94hPT0dm83GmDFjKt3GhUN7Y8aMYcOGDTz33HPYbDZsNhsHDhwAYNeuXdxxxx00btyY0NBQRo0axfHjxx3b6d27N5MmTSI5OZng4GD69+8PwPz58+nUqRMBAQFEREQwYcIETp06BcD69esZO3YshYWFjv2lpqY66r9waC83N5fBgwfTuHFjmjRpwl133cXRo0cd61NTU+ncuTMrVqygTZs2BAUFcffdd3Py5ElHm7/97W906tQJf39/mjVrRr9+/Th9+vRlP2cRcaYgJSJ1xsvLi9mzZ/PCCy/w7bffVtomMzOTu+66i7vvvpsdO3aQmprKzJkznYbcLvbuu+/y8MMP88gjj/DVV18xbtw4xo4dy7p16wD70NiAAQO46667yMvL47nnnrtsrc899xzdunXjwQcfJC8vj7y8PCIiIsjLy6NXr1507tyZL774gn/+858cPXqUu+66y+n9r7/+Ot7e3nz66ae8/PLLADRo0IDnn3+er776itdff51PPvmERx99FIDu3buzcOFCmjRp4tjf1KlTK9RljGHIkCF8//33bNiwgYyMDL755huSkpKc2n3zzTesXr2aNWvWsGbNGjZs2OAYVs3Ly2PEiBHcd9997N69m/Xr1zNs2DB061WRGrjCmyqLiFTL6NGjzeDBg40xxtxyyy3mvvvuM8YY8+6775oL/1N0zz33mP79+zu99/e//73p2LFjldvu3r27efDBB52WDR8+3Nxxxx2O14MHDzajR4+udo3GVLxrvDHGzJw50yQkJDgtO3TokAHM3r17He/r3LnzJfdljDF/+ctfTLNmzRyvly9fboKCgiq0i4yMNAsWLDDGGPPhhx8aLy8vk5ub61i/c+dOA5jPP//cGGPME088YRo1amSKioocbX7/+9+brl27GmOMyczMNIA5cODAZWsUkUtTj5SI1Lm5c+fy+uuvs2vXrgrrdu/eTY8ePZyW9ejRg3379lFaWlrp9qp6z+7du2uv6PMyMzNZt24djRs3djxiYmIAey9Qufj4+ArvXbduHf3796dly5YEBgZy7733UlBQ4NKQ2u7du4mIiCAiIsKxrGPHjjRt2tTpeNu0aUNgYKDjdXh4OPn5+QDcdNNN3HbbbXTq1Inhw4ezbNkyS65bE/EEClIiUuduvfVWbr/9dh5//PEK64wxFX7FZ6ox5FTZe9zxa8CysjIGDRpEdna202Pfvn3ceuutjnYBAQFO7zt48CB33HEHsbGxvPPOO2RmZrJo0SIAfvrpp2rvv6rjunh5w4YNndbbbDbKysoA+xBrRkYGH3zwAR07duSFF17g+uuvJycnp9p1iIidgpSIWGLOnDn84x//YMuWLU7LO3bsyObNm52Wbdmyhfbt2+Pl5VXptjp06FDpezp06HBFNfr4+FToBevSpQs7d+6kTZs2tG3b1ulxcXi60BdffMG5c+d49tlnueWWW2jfvj3ffffdZfd3sY4dO5Kbm8uhQ4ccy3bt2kVhYaFLx2uz2ejRowdPPvkkWVlZ+Pj48O6771b7/SJipyAlIpbo1KkTv/3tb3nhhReclj/yyCN8/PHHPPXUU3z99de8/vrrvPjii5VeeF3u97//Pa+99hovvfQS+/btY/78+axateqS76mONm3a8O9//5sDBw5w/PhxysrKmDhxIt9//z0jRozg888/Z//+/Xz44Yfcd999lwxB0dHRnDt3jhdeeIH9+/ezYsUKXnrppQr7O3XqFB9//DHHjx/nzJkzFbbTr18/brzxRn7729/y5Zdf8vnnn3PvvffSq1evSocTK/Pvf/+b2bNn88UXX5Cbm8uqVas4duzYFQdPkauRgpSIWOapp56qMGzXpUsX/vKXv/D2228TGxvLH/7wB2bNmlXllAUAQ4YM4bnnnuNPf/oTN9xwAy+//DLLly+nd+/eV1Tf1KlT8fLyomPHjjRv3pzc3FxatGjBp59+SmlpKbfffjuxsbE8/PDDBAUF0aBB1f9J7dy5M/Pnz2fu3LnExsby5z//ucI0EN27d2f8+PEkJSXRvHlznnnmmQrbsdlsrF69mmuuuYZbb72Vfv36cd1117Fy5cpqH1eTJk3YuHEjd9xxB+3bt2fGjBk8++yzJCYmVv/DEREAbKY6Fx+IiIiISAXqkRIRERGpIQUpERERkRpSkBIRERGpIQUpERERkRpSkBIRERGpIQUpERERkRpSkBIRERGpIQUpERERkRpSkBIRERGpIQUpERERkRpSkBIRERGpIQUpERERkRr6/1f7yFLiKcPUAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(bmo_fitness_values,label=\"BMO\",color=\"magenta\")\n",
    "plt.xlabel(\"No of iterations\")\n",
    "plt.ylabel(\"Fitness values\")\n",
    "plt.title('Convergence of BMO', fontweight='bold')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 306,
   "id": "e3ba9ef7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1da852936a0>"
      ]
     },
     "execution_count": 306,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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ISRdPgrgL3JXQ0REdFNY/O02Uzw8PDB79my88sor1tgdtTacBoCIiNogq4QkwPDMtOrqamvtjloTTgNARERtkMW32xYtWmT0WgiBsrIyrFu3Dvfcc4/VCqNWhLNuExFRG2RxSMrIyDB67eDggA4dOmDcuHFITU21WmHUiqj+uJLE221ERNSGWBySiouLW6IOas3qryTpKgD9ecDBTd56iIiIbgKrjUkiO6b0BJTtDeuceZuIiNoIs64kjRw50uwdbt68ucnFUCvm1AXQVRnGJTn3krsaIiKiFmdWSPL09GzpOqi1cwoFLu3iuCQiImozzApJq1atauk6qLVTcRoAIiJqWzgmiczDaQCIiKiNsfjbbQCwadMmfPzxxygpKUFdXZ3Re3v27LFKYdTKOHEaACIialssvpK0aNEijB8/Hj4+PigoKMAdd9yB9u3b4+jRo0hMTGyJGqk1qH80yeVjgNDJWgoREdHNYHFIyszMxIoVK/D+++9DpVLhhRdeQHZ2Nv7v//6PjyWxZ46dAIUKwBXgcqnc1RAREbU4i0NSSUkJ4uLiAAAuLi44d+4cAGDs2LFYv369dauj1kPhADiFGNY5eJuIiNoAi0OSn58fqqqqAADBwcHYuXMnAMNM3EII61ZHrQsHbxMRURticUgaNGgQvvjiCwDAk08+iWeffRZDhgxBUlISHnzwQasXSK0IB28TEVEbYvG321asWAG9Xg8AmDx5Mtq1a4fc3FwMGzYMkydPtnqB1IqoeCWJiIjaDotDkoODAxwc/rwANWrUKIwaNcqqRVErxStJRETUhlh8uy0kJASvvPIKDh482BL1UGvGK0lERNSGWBySpk2bhv/85z/o0aMHoqOjsWDBApSVlbVEbdTa1H+7TX8W0P0maylEREQtzeKQlJKSgl27duHgwYO4//77sXTpUgQFBSEhIQFr165tiRqptXBwBRz9Deu85UZERHauyc9u6969O15//XUcOnQIOTk5OHPmDMaPH2/N2qg14jQARETURjTrAbc//fQTpk+fjgcffBCHDh3CX//6V4v3kZmZiZCQEDg7OyM6Oho5OTmNts3NzUV8fDzat28PFxcXhIWFISMjw6jN6tWroVAoGiyXLl1qcr90FQ7eJiKiNsLib7cdPnwY//jHP/DPf/4Tx44dw1133YW5c+di5MiRcHd3t2hfGzduxPTp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EMJorNCN2lirXyIiIrJvst5uS0lJwdixYxETE4N+/fphxYoVKCkpweTJkwEYbnGdPHkSa9euBQAsWbIEQUFBCAsLA2CYN2nevHmYNm2atM/09HTExMQgNDQUdXV1yMrKwtq1a42+yXajfomIiIhkDUlJSUmoqqrC7NmzUVZWhoiICGRlZSE4OBgAUFZWZjR3kV6vR2pqKoqLi+Ho6IjQ0FDMnTsXkyZNktpcuHABTz/9NE6cOCFNOPnRRx8hKSnJ7H6JiIiIZJ0nyZZxniQiIiLbY8nfb9kfS0JERETUGjEkEREREZnAkERERERkAkMSERERkQkMSUREREQmMCQRERERmcCQRERERGQCQxIRERGRCQxJRERERCYwJBERERGZIOuz22xZ/dNctFqtzJUQERGRuer/bpvzVDaGpCY6d+4cACAwMFDmSoiIiMhS586dg6en53Xb8AG3TaTX63Hq1Cm4u7tDoVBYdd9arRaBgYEoLS2164fntoXjbAvHCPA47Q2P0360hWMELDtOIQTOnTuHjh07wsHh+qOOeCWpiRwcHBAQENCifXh4eNj1P+p6beE428IxAjxOe8PjtB9t4RgB84/zRleQ6nHgNhEREZEJDElEREREJjAktUJqtRqvvfYa1Gq13KW0qLZwnG3hGAEep73hcdqPtnCMQMsdJwduExEREZnAK0lEREREJjAkEREREZnAkERERERkAkMSERERkQkMSa1MZmYmQkJC4OzsjOjoaOTk5MhdklWlpaVBoVAYLX5+fnKX1Ww7duzAsGHD0LFjRygUCmzZssXofSEE0tLS0LFjR7i4uGDgwIH49ddf5Sm2GW50nI8//niD89u3b195im2i9PR03H777XB3d4ePjw9GjBiBQ4cOGbWxh/NpznHaw/lcunQpevXqJU0y2K9fP3z11VfS+/ZwLoEbH6c9nMtrpaenQ6FQYPr06dI2a59PhqRWZOPGjZg+fTpmzZqFgoIC3HnnnUhMTERJSYncpVlVz549UVZWJi379u2Tu6Rmu3DhAnr37o3333/f5PvvvPMO5s+fj/fffx+7du2Cn58fhgwZIj0D0Fbc6DgB4J577jE6v1lZWTexwubbvn07pkyZgp07dyI7OxtXrlxBQkICLly4ILWxh/NpznECtn8+AwICMHfuXOzevRu7d+/GoEGDMHz4cOkPpz2cS+DG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NLmv8PBwk58JDw9vVo0qlarB1auoqCj8+uuv6Ny5M7p27Wq0XBuMrrZ7925cuXIF7733Hvr27Yvu3bvj1KlTN+zvWj169EBJSQlKS0ulbfv370d1dbVFx6tQKBAfH4/XX38dBQUFUKlU+PTTT83+PBExJBFRC4mMjMSjjz6KxYsXG21/7rnn8N133+GNN97A4cOHsWbNGrz//vsmBzHXe/7557F69WosW7YMRUVFmD9/PjZv3nzdz5ijc+fO+O9//4tjx46hsrISer0eU6ZMwW+//Ybk5GT89NNPOHr0KL755hs88cQT1w04oaGhuHLlChYvXoyjR49i3bp1WLZsWYP+zp8/j++++w6VlZWoqalpsJ/BgwejV69eePTRR7Fnzx789NNPeOyxxzBgwACTt/hM+e9//4u33noLu3fvRklJCTZv3owzZ840O1QStTUMSUTUYt54440Gt9KioqLw8ccfY8OGDYiIiMCrr76K2bNnN/q1fQAYMWIEFi5ciHfffRc9e/bE8uXLsWrVKgwcOLBZ9c2YMQNKpRI9evRAhw4dUFJSgo4dO+KHH36ATqfD0KFDERERgWeeeQaenp5wcGj8/zL79OmD+fPn4+2330ZERAT+8Y9/NJgKIS4uDpMnT0ZSUhI6dOiAd955p8F+FAoFtmzZgltuuQX9+/fH4MGD0aVLF2zcuNHs4/Lw8MCOHTtw7733onv37nj55Zfx3nvvITEx0fxfDhFBIcwZDEBERETUxvBKEhEREZEJDElEREREJjAkEREREZnAkERERERkAkMSERERkQkMSUREREQmMCQRERERmcCQRERERGQCQxIRERGRCQxJRERERCYwJBERERGZwJBEREREZML/A4KkpvCdPD3OAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(ssa_fitness_values,label=\"SSA\",color=\"gold\")\n",
    "plt.xlabel(\"No of iterations\")\n",
    "plt.ylabel(\"Fitness values\")\n",
    "plt.title('Convergence of SSA', fontweight='bold')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a96f29cf",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
